diff options
388 files changed, 5390 insertions, 2556 deletions
diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java index f56c76332faa..e89157b52108 100644 --- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java +++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java @@ -56,20 +56,8 @@ import java.util.concurrent.TimeUnit; @LargeTest @RunWith(AndroidJUnit4.class) public class UserLifecycleTest { - private final int TIMEOUT_REMOVE_USER_MS = 4 * 1000; // 4 sec - private final int CHECK_USER_REMOVED_INTERVAL_MS = 200; // 0.2 sec - - private final int TIMEOUT_USER_START_SEC = 4; // 4 sec - - private final int TIMEOUT_USER_SWITCH_SEC = 8; // 8 sec - - private final int TIMEOUT_USER_STOP_SEC = 1; // 1 sec - - private final int TIMEOUT_MANAGED_PROFILE_UNLOCK_SEC = 2; // 2 sec - - private final int TIMEOUT_LOCKED_BOOT_COMPLETE_MS = 5 * 1000; // 5 sec - - private final int TIMEOUT_EPHERMAL_USER_STOP_SEC = 6; // 6 sec + private final int TIMEOUT_IN_SECOND = 10; + private final int CHECK_USER_REMOVED_INTERVAL_MS = 200; private UserManager mUm; private ActivityManager mAm; @@ -109,7 +97,7 @@ public class UserLifecycleTest { final CountDownLatch latch = new CountDownLatch(1); registerBroadcastReceiver(Intent.ACTION_USER_STARTED, latch, userInfo.id); mIam.startUserInBackground(userInfo.id); - latch.await(TIMEOUT_USER_START_SEC, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); mState.pauseTiming(); removeUser(userInfo.id); @@ -142,10 +130,10 @@ public class UserLifecycleTest { final CountDownLatch latch = new CountDownLatch(1); registerBroadcastReceiver(Intent.ACTION_USER_STARTED, latch, userInfo.id); mIam.startUserInBackground(userInfo.id); - latch.await(TIMEOUT_USER_START_SEC, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); mState.resumeTiming(); - stopUser(userInfo.id); + stopUser(userInfo.id, false); mState.pauseTiming(); removeUser(userInfo.id); @@ -164,7 +152,7 @@ public class UserLifecycleTest { mState.resumeTiming(); mAm.switchUser(userInfo.id); - latch.await(TIMEOUT_LOCKED_BOOT_COMPLETE_MS, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); mState.pauseTiming(); switchUser(startUser); @@ -184,7 +172,7 @@ public class UserLifecycleTest { mState.resumeTiming(); mIam.startUserInBackground(userInfo.id); - latch.await(TIMEOUT_MANAGED_PROFILE_UNLOCK_SEC, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); mState.pauseTiming(); removeUser(userInfo.id); @@ -215,10 +203,30 @@ public class UserLifecycleTest { mState.resumeTiming(); mAm.switchUser(startUser); - latch.await(TIMEOUT_EPHERMAL_USER_STOP_SEC, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); + + mState.pauseTiming(); + switchLatch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); + removeUser(userInfo.id); + mState.resumeTiming(); + } + } + + @Test + public void managedProfileStoppedPerf() throws Exception { + while (mState.keepRunning()) { + mState.pauseTiming(); + final UserInfo userInfo = mUm.createProfileForUser("TestUser", + UserInfo.FLAG_MANAGED_PROFILE, mAm.getCurrentUser()); + final CountDownLatch latch = new CountDownLatch(1); + registerBroadcastReceiver(Intent.ACTION_USER_UNLOCKED, latch, userInfo.id); + mIam.startUserInBackground(userInfo.id); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); + mState.resumeTiming(); + + stopUser(userInfo.id, true); mState.pauseTiming(); - switchLatch.await(TIMEOUT_USER_SWITCH_SEC, TimeUnit.SECONDS); removeUser(userInfo.id); mState.resumeTiming(); } @@ -228,12 +236,12 @@ public class UserLifecycleTest { final CountDownLatch latch = new CountDownLatch(1); registerUserSwitchObserver(latch, null, userId); mAm.switchUser(userId); - latch.await(TIMEOUT_USER_SWITCH_SEC, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); } - private void stopUser(int userId) throws Exception { + private void stopUser(int userId, boolean force) throws Exception { final CountDownLatch latch = new CountDownLatch(1); - mIam.stopUser(userId, false /* force */, new IStopUserCallback.Stub() { + mIam.stopUser(userId, force /* force */, new IStopUserCallback.Stub() { @Override public void userStopped(int userId) throws RemoteException { latch.countDown(); @@ -243,7 +251,7 @@ public class UserLifecycleTest { public void userStopAborted(int userId) throws RemoteException { } }); - latch.await(TIMEOUT_USER_STOP_SEC, TimeUnit.SECONDS); + latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); } private void registerUserSwitchObserver(final CountDownLatch switchLatch, @@ -283,9 +291,10 @@ public class UserLifecycleTest { try { mUm.removeUser(userId); final long startTime = System.currentTimeMillis(); + final long timeoutInMs = TIMEOUT_IN_SECOND * 1000; while (mUm.getUserInfo(userId) != null && - System.currentTimeMillis() - startTime < TIMEOUT_REMOVE_USER_MS) { - Thread.sleep(CHECK_USER_REMOVED_INTERVAL_MS); + System.currentTimeMillis() - startTime < timeoutInMs) { + TimeUnit.MILLISECONDS.sleep(CHECK_USER_REMOVED_INTERVAL_MS); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); diff --git a/api/test-current.txt b/api/test-current.txt index a7e384d4ba02..6a709570bf4c 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -44874,10 +44874,13 @@ package android.view { public final class KeyboardShortcutGroup implements android.os.Parcelable { ctor public KeyboardShortcutGroup(java.lang.CharSequence, java.util.List<android.view.KeyboardShortcutInfo>); ctor public KeyboardShortcutGroup(java.lang.CharSequence); + ctor public KeyboardShortcutGroup(java.lang.CharSequence, java.util.List<android.view.KeyboardShortcutInfo>, boolean); + ctor public KeyboardShortcutGroup(java.lang.CharSequence, boolean); method public void addItem(android.view.KeyboardShortcutInfo); method public int describeContents(); method public java.util.List<android.view.KeyboardShortcutInfo> getItems(); method public java.lang.CharSequence getLabel(); + method public boolean isSystemGroup(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutGroup> CREATOR; } diff --git a/cmds/bootanimation/Android.mk b/cmds/bootanimation/Android.mk index 0e2c13ee1719..7ab402a2cd46 100644 --- a/cmds/bootanimation/Android.mk +++ b/cmds/bootanimation/Android.mk @@ -1,14 +1,49 @@ +bootanimation_CommonCFlags = -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES +bootanimation_CommonCFlags += -Wall -Werror -Wunused -Wunreachable-code + + +# bootanimation executable +# ========================================================= + LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ bootanimation_main.cpp \ audioplay.cpp \ - BootAnimation.cpp -LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES +LOCAL_CFLAGS += ${bootanimation_CommonCFlags} + +LOCAL_SHARED_LIBRARIES := \ + libOpenSLES \ + libandroidfw \ + libbase \ + libbinder \ + libbootanimation \ + libcutils \ + liblog \ + libutils \ + +LOCAL_MODULE:= bootanimation + +LOCAL_INIT_RC := bootanim.rc + +ifdef TARGET_32_BIT_SURFACEFLINGER +LOCAL_32_BIT_ONLY := true +endif + +include $(BUILD_EXECUTABLE) -LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code + +# libbootanimation +# =========================================================== + +include $(CLEAR_VARS) +LOCAL_MODULE := libbootanimation +LOCAL_CFLAGS += ${bootanimation_CommonCFlags} + +LOCAL_SRC_FILES:= \ + BootAnimation.cpp LOCAL_C_INCLUDES += \ external/tinyalsa/include \ @@ -25,16 +60,11 @@ LOCAL_SHARED_LIBRARIES := \ libEGL \ libGLESv1_CM \ libgui \ - libOpenSLES \ libtinyalsa \ libbase -LOCAL_MODULE:= bootanimation - -LOCAL_INIT_RC := bootanim.rc - ifdef TARGET_32_BIT_SURFACEFLINGER LOCAL_32_BIT_ONLY := true endif -include $(BUILD_EXECUTABLE) +include ${BUILD_SHARED_LIBRARY} diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index 4f772c379098..6b2de4b7f1ff 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -62,7 +62,6 @@ #include <EGL/eglext.h> #include "BootAnimation.h" -#include "audioplay.h" namespace android { @@ -92,26 +91,18 @@ static constexpr size_t FONT_NUM_ROWS = FONT_NUM_CHARS / FONT_NUM_COLS; static const int TEXT_CENTER_VALUE = INT_MAX; static const int TEXT_MISSING_VALUE = INT_MIN; static const char EXIT_PROP_NAME[] = "service.bootanim.exit"; -static const char PLAY_SOUND_PROP_NAME[] = "persist.sys.bootanim.play_sound"; static const int ANIM_ENTRY_NAME_MAX = 256; static constexpr size_t TEXT_POS_LEN_MAX = 16; -static const char BOOT_COMPLETED_PROP_NAME[] = "sys.boot_completed"; -static const char BOOTREASON_PROP_NAME[] = "ro.boot.bootreason"; -// bootreasons list in "system/core/bootstat/bootstat.cpp". -static const std::vector<std::string> PLAY_SOUND_BOOTREASON_BLACKLIST { - "kernel_panic", - "Panic", - "Watchdog", -}; // --------------------------------------------------------------------------- -BootAnimation::BootAnimation() : Thread(false), mClockEnabled(true), mTimeIsAccurate(false), - mTimeFormat12Hour(false), mTimeCheckThread(NULL) { +BootAnimation::BootAnimation(InitCallback initCallback, + PlayPartCallback partCallback) + : Thread(false), mClockEnabled(true), mTimeIsAccurate(false), + mTimeFormat12Hour(false), mTimeCheckThread(NULL), + mInitCallback(initCallback), mPlayPartCallback(partCallback) { mSession = new SurfaceComposerClient(); - // If the system has already booted, the animation is not being used for a boot. - mSystemBoot = !android::base::GetBoolProperty(BOOT_COMPLETED_PROP_NAME, false); std::string powerCtl = android::base::GetProperty("sys.powerctl", ""); if (powerCtl.empty()) { mShuttingDown = false; @@ -142,7 +133,6 @@ void BootAnimation::binderDied(const wp<IBinder>&) // might be blocked on a condition variable that will never be updated. kill( getpid(), SIGKILL ); requestExit(); - audioplay::destroy(); } status_t BootAnimation::initTexture(Texture* texture, AssetManager& assets, @@ -704,7 +694,6 @@ bool BootAnimation::preloadZip(Animation& animation) return false; } - Animation::Part* partWithAudio = NULL; ZipEntryRO entry; char name[ANIM_ENTRY_NAME_MAX]; while ((entry = zip->nextEntry(cookie)) != NULL) { @@ -739,7 +728,6 @@ bool BootAnimation::preloadZip(Animation& animation) // a part may have at most one audio file part.audioData = (uint8_t *)map->getDataPtr(); part.audioLength = map->getDataLength(); - partWithAudio = ∂ } else if (leaf == "trim.txt") { part.trimData.setTo((char const*)map->getDataPtr(), map->getDataLength()); @@ -789,13 +777,8 @@ bool BootAnimation::preloadZip(Animation& animation) } } - // Create and initialize audioplay if there is a wav file in any of the animations. - // Do it on a separate thread so we don't hold up the animation intro. - if (partWithAudio != NULL) { - ALOGD("found audio.wav, creating playback engine"); - mInitAudioThread = new InitAudioThread(partWithAudio->audioData, - partWithAudio->audioLength); - mInitAudioThread->run("BootAnimation::InitAudioThread", PRIORITY_NORMAL); + if (mInitCallback != nullptr) { + mInitCallback(animation.parts); } zip->endIteration(cookie); @@ -868,11 +851,6 @@ bool BootAnimation::movie() mTimeCheckThread = nullptr; } - // We should have joined mInitAudioThread thread in playAnimation - if (mInitAudioThread != nullptr) { - mInitAudioThread = nullptr; - } - releaseAnimation(animation); if (clockFontInitialized) { @@ -909,14 +887,8 @@ bool BootAnimation::playAnimation(const Animation& animation) if(exitPending() && !part.playUntilComplete) break; - // only play audio file the first time we animate the part - if (r == 0 && part.audioData && playSoundsAllowed()) { - ALOGD("playing clip for part%d, size=%d", (int) i, part.audioLength); - // Block until the audio engine is finished initializing. - if (mInitAudioThread != nullptr) { - mInitAudioThread->join(); - } - audioplay::playClip(part.audioData, part.audioLength); + if (mPlayPartCallback != nullptr) { + mPlayPartCallback(i, part, r); } glClearColor( @@ -1005,10 +977,6 @@ bool BootAnimation::playAnimation(const Animation& animation) } } - // we've finally played everything we're going to play - audioplay::setPlaying(false); - audioplay::destroy(); - return true; } @@ -1054,32 +1022,6 @@ BootAnimation::Animation* BootAnimation::loadAnimation(const String8& fn) return animation; } -bool BootAnimation::playSoundsAllowed() const { - // Only play sounds for system boots, not runtime restarts. - if (!mSystemBoot) { - return false; - } - if (mShuttingDown) { // no audio while shutting down - return false; - } - // Read the system property to see if we should play the sound. - // If it's not present, default to allowed. - if (!property_get_bool(PLAY_SOUND_PROP_NAME, 1)) { - return false; - } - - // Don't play sounds if this is a reboot due to an error. - char bootreason[PROPERTY_VALUE_MAX]; - if (property_get(BOOTREASON_PROP_NAME, bootreason, nullptr) > 0) { - for (const auto& str : PLAY_SOUND_BOOTREASON_BLACKLIST) { - if (strcasecmp(str.c_str(), bootreason) == 0) { - return false; - } - } - } - return true; -} - bool BootAnimation::updateIsTimeAccurate() { static constexpr long long MAX_TIME_IN_PAST = 60000LL * 60LL * 24LL * 30LL; // 30 days static constexpr long long MAX_TIME_IN_FUTURE = 60000LL * 90LL; // 90 minutes @@ -1211,17 +1153,6 @@ status_t BootAnimation::TimeCheckThread::readyToRun() { return NO_ERROR; } -BootAnimation::InitAudioThread::InitAudioThread(uint8_t* exampleAudioData, int exampleAudioLength) - : Thread(false), - mExampleAudioData(exampleAudioData), - mExampleAudioLength(exampleAudioLength) {} - -bool BootAnimation::InitAudioThread::threadLoop() { - audioplay::create(mExampleAudioData, mExampleAudioLength); - // Exit immediately - return false; -} - // --------------------------------------------------------------------------- } diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h index 181ef1c596d1..3ebe7d6e4dff 100644 --- a/cmds/bootanimation/BootAnimation.h +++ b/cmds/bootanimation/BootAnimation.h @@ -39,44 +39,6 @@ class SurfaceControl; class BootAnimation : public Thread, public IBinder::DeathRecipient { public: - BootAnimation(); - - sp<SurfaceComposerClient> session() const; - -private: - virtual bool threadLoop(); - virtual status_t readyToRun(); - virtual void onFirstRef(); - virtual void binderDied(const wp<IBinder>& who); - - bool updateIsTimeAccurate(); - - class TimeCheckThread : public Thread { - public: - TimeCheckThread(BootAnimation* bootAnimation); - virtual ~TimeCheckThread(); - private: - virtual status_t readyToRun(); - virtual bool threadLoop(); - bool doThreadLoop(); - void addTimeDirWatch(); - - int mInotifyFd; - int mSystemWd; - int mTimeWd; - BootAnimation* mBootAnimation; - }; - - class InitAudioThread : public Thread { - public: - InitAudioThread(uint8_t* exampleAudioData, int mExampleAudioLength); - private: - virtual bool threadLoop(); - - uint8_t* mExampleAudioData; - int mExampleAudioLength; - }; - struct Texture { GLint w; GLint h; @@ -131,6 +93,49 @@ private: Font clockFont; }; + // Callback will be called during initialization after we have loaded + // the animation and be provided with all parts in animation. + typedef std::function<void(const Vector<Animation::Part>& parts)> InitCallback; + + // Callback will be called while animation is playing before each part is + // played. It will be provided with the part and play count for it. + // It will be provided with the partNumber for the part about to be played, + // as well as a reference to the part itself. It will also be provided with + // which play of that part is about to start, some parts are repeated + // multiple times. + typedef std::function<void(int partNumber, const Animation::Part& part, int playNumber)> + PlayPartCallback; + + // Callbacks may be null and will be called from this class's internal + // thread. + BootAnimation(InitCallback initCallback, PlayPartCallback partCallback); + + sp<SurfaceComposerClient> session() const; + +private: + virtual bool threadLoop(); + virtual status_t readyToRun(); + virtual void onFirstRef(); + virtual void binderDied(const wp<IBinder>& who); + + bool updateIsTimeAccurate(); + + class TimeCheckThread : public Thread { + public: + TimeCheckThread(BootAnimation* bootAnimation); + virtual ~TimeCheckThread(); + private: + virtual status_t readyToRun(); + virtual bool threadLoop(); + bool doThreadLoop(); + void addTimeDirWatch(); + + int mInotifyFd; + int mSystemWd; + int mTimeWd; + BootAnimation* mBootAnimation; + }; + status_t initTexture(Texture* texture, AssetManager& asset, const char* name); status_t initTexture(FileMap* map, int* width, int* height); status_t initFont(Font* font, const char* fallback); @@ -144,7 +149,6 @@ private: void releaseAnimation(Animation*) const; bool parseAnimationDesc(Animation&); bool preloadZip(Animation &animation); - bool playSoundsAllowed() const; void checkExit(); @@ -162,12 +166,12 @@ private: bool mClockEnabled; bool mTimeIsAccurate; bool mTimeFormat12Hour; - bool mSystemBoot; bool mShuttingDown; String8 mZipFileName; SortedVector<String8> mLoadedFiles; sp<TimeCheckThread> mTimeCheckThread = nullptr; - sp<InitAudioThread> mInitAudioThread = nullptr; + InitCallback mInitCallback = nullptr; + PlayPartCallback mPlayPartCallback = nullptr; }; // --------------------------------------------------------------------------- diff --git a/cmds/bootanimation/bootanimation_main.cpp b/cmds/bootanimation/bootanimation_main.cpp index 3689d5ed937e..c11d90522ffd 100644 --- a/cmds/bootanimation/bootanimation_main.cpp +++ b/cmds/bootanimation/bootanimation_main.cpp @@ -27,13 +27,77 @@ #include <utils/Log.h> #include <utils/SystemClock.h> #include <utils/threads.h> +#include <android-base/properties.h> #include "BootAnimation.h" +#include "audioplay.h" using namespace android; // --------------------------------------------------------------------------- +namespace { + +// Create a typedef for readability. +typedef android::BootAnimation::Animation Animation; + +static const char PLAY_SOUND_PROP_NAME[] = "persist.sys.bootanim.play_sound"; +static const char BOOT_COMPLETED_PROP_NAME[] = "sys.boot_completed"; +static const char POWER_CTL_PROP_NAME[] = "sys.powerctl"; +static const char BOOTREASON_PROP_NAME[] = "ro.boot.bootreason"; +static const std::vector<std::string> PLAY_SOUND_BOOTREASON_BLACKLIST { + "kernel_panic", + "Panic", + "Watchdog", +}; + +class InitAudioThread : public Thread { +public: + InitAudioThread(uint8_t* exampleAudioData, int exampleAudioLength) + : Thread(false), + mExampleAudioData(exampleAudioData), + mExampleAudioLength(exampleAudioLength) {} +private: + virtual bool threadLoop() { + audioplay::create(mExampleAudioData, mExampleAudioLength); + // Exit immediately + return false; + } + + uint8_t* mExampleAudioData; + int mExampleAudioLength; +}; + +bool playSoundsAllowed() { + // Only play sounds for system boots, not runtime restarts. + if (android::base::GetBoolProperty(BOOT_COMPLETED_PROP_NAME, false)) { + return false; + } + // no audio while shutting down + if (!android::base::GetProperty(POWER_CTL_PROP_NAME, "").empty()) { + return false; + } + // Read the system property to see if we should play the sound. + // If it's not present, default to allowed. + if (!property_get_bool(PLAY_SOUND_PROP_NAME, 1)) { + return false; + } + + // Don't play sounds if this is a reboot due to an error. + char bootreason[PROPERTY_VALUE_MAX]; + if (property_get(BOOTREASON_PROP_NAME, bootreason, nullptr) > 0) { + for (const auto& str : PLAY_SOUND_BOOTREASON_BLACKLIST) { + if (strcasecmp(str.c_str(), bootreason) == 0) { + return false; + } + } + } + return true; +} + +} // namespace + + int main() { setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_DISPLAY); @@ -71,10 +135,50 @@ int main() ALOGI("Waiting for SurfaceFlinger took %" PRId64 " ms", totalWaited); } + // TODO: Move audio code to a new class that just exports the callbacks. + sp<InitAudioThread> initAudioThread = nullptr; + + auto initCallback = [&](const Vector<Animation::Part>& parts) { + const Animation::Part* partWithAudio = nullptr; + for (const Animation::Part& part : parts) { + if (part.audioData != nullptr) { + partWithAudio = ∂ + } + } + + if (partWithAudio == nullptr) { + return; + } + + ALOGD("found audio.wav, creating playback engine"); + initAudioThread = new InitAudioThread(partWithAudio->audioData, + partWithAudio->audioLength); + initAudioThread->run("BootAnimation::InitAudioThread", PRIORITY_NORMAL); + + }; + + auto partCallback = [&](int partNumber, const Animation::Part& part, + int playNumber) { + // only play audio file the first time we animate the part + if (playNumber == 0 && part.audioData && playSoundsAllowed()) { + ALOGD("playing clip for part%d, size=%d", + partNumber, part.audioLength); + // Block until the audio engine is finished initializing. + if (initAudioThread != nullptr) { + initAudioThread->join(); + } + audioplay::playClip(part.audioData, part.audioLength); + } + }; + // create the boot animation object - sp<BootAnimation> boot = new BootAnimation(); + sp<BootAnimation> boot = new BootAnimation(initCallback, partCallback); IPCThreadState::self()->joinThreadPool(); + + // we've finally played everything we're going to play + audioplay::setPlaying(false); + audioplay::destroy(); } return 0; } diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index 4e31e44d6e75..e686a89accef 100644 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -1397,7 +1397,7 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio if (mStartTime < 0) { // First frame. If there is start delay, start delay count down will happen *after* this // frame. - mStartTime = mReversing ? frameTime : frameTime + mStartDelay; + mStartTime = mReversing ? frameTime : frameTime + (long) (mStartDelay * sDurationScale); } // Handle pause/resume diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index b439c1dc02c4..b360c82374d0 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -6142,6 +6142,7 @@ public class Activity extends ContextThemeWrapper * * @param action the action to run on the UI thread */ + @Override public final void runOnUiThread(Runnable action) { if (Thread.currentThread() != mUiThread) { mHandler.post(action); diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 3b9480f29264..9c2e11d7657b 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1155,8 +1155,12 @@ public class ActivityManager { * E.g. freeform, split-screen, picture-in-picture. * @hide */ - static public boolean supportsMultiWindow() { - return !isLowRamDeviceStatic() + static public boolean supportsMultiWindow(Context context) { + // On watches, multi-window is used to present essential system UI, and thus it must be + // supported regardless of device memory characteristics. + boolean isWatch = context.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_WATCH); + return (!isLowRamDeviceStatic() || isWatch) && Resources.getSystem().getBoolean( com.android.internal.R.bool.config_supportsMultiWindow); } @@ -1165,8 +1169,8 @@ public class ActivityManager { * Returns true if the system supports split screen multi-window. * @hide */ - static public boolean supportsSplitScreenMultiWindow() { - return supportsMultiWindow() + static public boolean supportsSplitScreenMultiWindow(Context context) { + return supportsMultiWindow(context) && Resources.getSystem().getBoolean( com.android.internal.R.bool.config_supportsSplitScreenMultiWindow); } diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 53608fbdd4bb..c4d51168d20c 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -25,6 +25,8 @@ import android.annotation.TestApi; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; +import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; @@ -826,7 +828,11 @@ public class ActivityOptions { case ANIM_THUMBNAIL_SCALE_DOWN: case ANIM_THUMBNAIL_ASPECT_SCALE_UP: case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN: - mThumbnail = (Bitmap) opts.getParcelable(KEY_ANIM_THUMBNAIL); + // Unpackage the GraphicBuffer from the parceled thumbnail + final GraphicBuffer buffer = opts.getParcelable(KEY_ANIM_THUMBNAIL); + if (buffer != null) { + mThumbnail = Bitmap.createHardwareBitmap(buffer); + } mStartX = opts.getInt(KEY_ANIM_START_X, 0); mStartY = opts.getInt(KEY_ANIM_START_Y, 0); mWidth = opts.getInt(KEY_ANIM_WIDTH, 0); @@ -919,9 +925,14 @@ public class ActivityOptions { return mCustomInPlaceResId; } - /** @hide */ - public Bitmap getThumbnail() { - return mThumbnail; + /** + * The thumbnail is copied into a hardware bitmap when it is bundled and sent to the system, so + * it should always be backed by a GraphicBuffer on the other end. + * + * @hide + */ + public GraphicBuffer getThumbnail() { + return mThumbnail.createGraphicBufferHandle(); } /** @hide */ @@ -1230,7 +1241,14 @@ public class ActivityOptions { case ANIM_THUMBNAIL_SCALE_DOWN: case ANIM_THUMBNAIL_ASPECT_SCALE_UP: case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN: - b.putParcelable(KEY_ANIM_THUMBNAIL, mThumbnail); + // Once we parcel the thumbnail for transfering over to the system, create a copy of + // the bitmap to a hardware bitmap and pass through the GraphicBuffer + if (mThumbnail == null) { + b.putParcelable(KEY_ANIM_THUMBNAIL, null); + } else { + final Bitmap hwBitmap = mThumbnail.copy(Config.HARDWARE, true /* immutable */); + b.putParcelable(KEY_ANIM_THUMBNAIL, hwBitmap.createGraphicBufferHandle()); + } b.putInt(KEY_ANIM_START_X, mStartX); b.putInt(KEY_ANIM_START_Y, mStartY); b.putInt(KEY_ANIM_WIDTH, mWidth); diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 86ddf9a2d7c9..4587f2899e16 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -1168,7 +1168,7 @@ public class Notification implements Parcelable */ public static final int GROUP_ALERT_CHILDREN = 2; - private int mGroupAlertBehavior = GROUP_ALERT_ALL; + private int mGroupAlertBehavior = GROUP_ALERT_CHILDREN; /** * If this notification is being shown as a badge, always show as a number. diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java index 11d9b5ea3651..042eece68b53 100644 --- a/core/java/android/app/PendingIntent.java +++ b/core/java/android/app/PendingIntent.java @@ -102,6 +102,7 @@ public final class PendingIntent implements Parcelable { FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT, + FLAG_IMMUTABLE, Intent.FILL_IN_ACTION, Intent.FILL_IN_DATA, diff --git a/core/java/android/app/TimePickerDialog.java b/core/java/android/app/TimePickerDialog.java index 8a4f8a626c71..0f006b6618b3 100644 --- a/core/java/android/app/TimePickerDialog.java +++ b/core/java/android/app/TimePickerDialog.java @@ -151,10 +151,7 @@ public class TimePickerDialog extends AlertDialog implements OnClickListener, @Override public void onClick(View view) { if (mTimePicker.validateInput()) { - if (mTimeSetListener != null) { - mTimeSetListener.onTimeSet(mTimePicker, mTimePicker.getCurrentHour(), - mTimePicker.getCurrentMinute()); - } + TimePickerDialog.this.onClick(TimePickerDialog.this, BUTTON_POSITIVE); dismiss(); } } diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java index 8519dbaadadc..57b954f40c6b 100644 --- a/core/java/android/bluetooth/BluetoothHeadset.java +++ b/core/java/android/bluetooth/BluetoothHeadset.java @@ -768,6 +768,28 @@ public final class BluetoothHeadset implements BluetoothProfile { } /** + * Force SCO audio to be opened regardless any other restrictions + * + * @param forced Whether or not SCO audio connection should be forced: + * True to force SCO audio + * False to use SCO audio in normal manner + * @hide + */ + public void setForceScoAudio(boolean forced) { + if (VDBG) log("setForceScoAudio " + String.valueOf(forced)); + if (mService != null && isEnabled()) { + try { + mService.setForceScoAudio(forced); + } catch (RemoteException e) { + Log.e(TAG, e.toString()); + } + } else { + Log.w(TAG, "Proxy not attached to service"); + if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); + } + } + + /** * Check if Bluetooth SCO audio is connected. * * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. diff --git a/core/java/android/bluetooth/IBluetoothHeadset.aidl b/core/java/android/bluetooth/IBluetoothHeadset.aidl index dde0ac67bbb5..92ab8da7542b 100755 --- a/core/java/android/bluetooth/IBluetoothHeadset.aidl +++ b/core/java/android/bluetooth/IBluetoothHeadset.aidl @@ -52,6 +52,7 @@ interface IBluetoothHeadset { boolean disconnectAudio(); void setAudioRouteAllowed(boolean allowed); boolean getAudioRouteAllowed(); + void setForceScoAudio(boolean forced); boolean startScoUsingVirtualVoiceCall(in BluetoothDevice device); boolean stopScoUsingVirtualVoiceCall(in BluetoothDevice device); oneway void phoneStateChanged(int numActive, int numHeld, int callState, String number, int type); diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 499d6bbdf535..ecc4dec47af7 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -162,6 +162,11 @@ public abstract class BatteryStats implements Parcelable { public static final int AGGREGATED_WAKE_TYPE_PARTIAL = 20; /** + * A constant indicating a bluetooth scan timer for unoptimized scans. + */ + public static final int BLUETOOTH_UNOPTIMIZED_SCAN_ON = 21; + + /** * Include all of the data in the stats, including previously saved data. */ public static final int STATS_SINCE_CHARGED = 0; @@ -191,8 +196,12 @@ public abstract class BatteryStats implements Parcelable { * New in version 21: * - Actual (not just apportioned) Wakelock time is also recorded. * - Aggregated partial wakelock time (per uid, instead of per wakelock) is recorded. + * - BLE scan result count + * - CPU frequency time per uid + * New in version 22: + * - BLE scan result background count, BLE unoptimized scan time */ - static final String CHECKIN_VERSION = "21"; + static final String CHECKIN_VERSION = "22"; /** * Old version, we hit 9 and ran out of room, need to remove. @@ -217,9 +226,10 @@ public abstract class BatteryStats implements Parcelable { private static final String STATE_TIME_DATA = "st"; // wl line is: // BATTERY_STATS_CHECKIN_VERSION, uid, which, "wl", name, - // full totalTime, 'f', count, current duration, max duration, total duration, - // partial totalTime, 'p', count, current duration, max duration, total duration, - // window totalTime, 'w', count, current duration, max duration, total duration + // full totalTime, 'f', count, current duration, max duration, total duration, + // partial totalTime, 'p', count, current duration, max duration, total duration, + // bg partial totalTime, 'bp', count, current duration, max duration, total duration, + // window totalTime, 'w', count, current duration, max duration, total duration // [Currently, full and window wakelocks have durations current = max = total = -1] private static final String WAKELOCK_DATA = "wl"; // awl line is: @@ -565,7 +575,10 @@ public abstract class BatteryStats implements Parcelable { public abstract Timer getForegroundActivityTimer(); public abstract Timer getBluetoothScanTimer(); public abstract Timer getBluetoothScanBackgroundTimer(); + public abstract Timer getBluetoothUnoptimizedScanTimer(); + public abstract Timer getBluetoothUnoptimizedScanBackgroundTimer(); public abstract Counter getBluetoothScanResultCounter(); + public abstract Counter getBluetoothScanResultBgCounter(); public abstract long[] getCpuFreqTimes(int which); public abstract long[] getScreenOffCpuFreqTimes(int which); @@ -3429,10 +3442,29 @@ public abstract class BatteryStats implements Parcelable { final long actualTime = bleTimer.getTotalDurationMsLocked(rawRealtimeMs); final long actualTimeBg = bleTimerBg != null ? bleTimerBg.getTotalDurationMsLocked(rawRealtimeMs) : 0; + // Result counters final int resultCount = u.getBluetoothScanResultCounter() != null ? u.getBluetoothScanResultCounter().getCountLocked(which) : 0; + final int resultCountBg = u.getBluetoothScanResultBgCounter() != null ? + u.getBluetoothScanResultBgCounter().getCountLocked(which) : 0; + // Unoptimized scan timer. Unpooled and since reset (regardless of 'which'). + final Timer unoptimizedScanTimer = u.getBluetoothUnoptimizedScanTimer(); + final long unoptimizedScanTotalTime = unoptimizedScanTimer != null ? + unoptimizedScanTimer.getTotalDurationMsLocked(rawRealtimeMs) : 0; + final long unoptimizedScanMaxTime = unoptimizedScanTimer != null ? + unoptimizedScanTimer.getMaxDurationMsLocked(rawRealtimeMs) : 0; + // Unoptimized bg scan timer. Unpooled and since reset (regardless of 'which'). + final Timer unoptimizedScanTimerBg = + u.getBluetoothUnoptimizedScanBackgroundTimer(); + final long unoptimizedScanTotalTimeBg = unoptimizedScanTimerBg != null ? + unoptimizedScanTimerBg.getTotalDurationMsLocked(rawRealtimeMs) : 0; + final long unoptimizedScanMaxTimeBg = unoptimizedScanTimerBg != null ? + unoptimizedScanTimerBg.getMaxDurationMsLocked(rawRealtimeMs) : 0; + dumpLine(pw, uid, category, BLUETOOTH_MISC_DATA, totalTime, count, - countBg, actualTime, actualTimeBg, resultCount); + countBg, actualTime, actualTimeBg, resultCount, resultCountBg, + unoptimizedScanTotalTime, unoptimizedScanTotalTimeBg, + unoptimizedScanMaxTime, unoptimizedScanMaxTimeBg); } } @@ -3469,8 +3501,11 @@ public abstract class BatteryStats implements Parcelable { sb.setLength(0); linePrefix = printWakeLockCheckin(sb, wl.getWakeTime(WAKE_TYPE_FULL), rawRealtime, "f", which, linePrefix); - linePrefix = printWakeLockCheckin(sb, wl.getWakeTime(WAKE_TYPE_PARTIAL), + final Timer pTimer = wl.getWakeTime(WAKE_TYPE_PARTIAL); + linePrefix = printWakeLockCheckin(sb, pTimer, rawRealtime, "p", which, linePrefix); + linePrefix = printWakeLockCheckin(sb, pTimer != null ? pTimer.getSubTimer() : null, + rawRealtime, "bp", which, linePrefix); linePrefix = printWakeLockCheckin(sb, wl.getWakeTime(WAKE_TYPE_WINDOW), rawRealtime, "w", which, linePrefix); @@ -4625,34 +4660,94 @@ public abstract class BatteryStats implements Parcelable { final long actualTimeMs = bleTimer.getTotalDurationMsLocked(rawRealtimeMs); final long actualTimeMsBg = bleTimerBg != null ? bleTimerBg.getTotalDurationMsLocked(rawRealtimeMs) : 0; + // Result counters final int resultCount = u.getBluetoothScanResultCounter() != null ? u.getBluetoothScanResultCounter().getCountLocked(which) : 0; + final int resultCountBg = u.getBluetoothScanResultBgCounter() != null ? + u.getBluetoothScanResultBgCounter().getCountLocked(which) : 0; + // Unoptimized scan timer. Unpooled and since reset (regardless of 'which'). + final Timer unoptimizedScanTimer = u.getBluetoothUnoptimizedScanTimer(); + final long unoptimizedScanTotalTime = unoptimizedScanTimer != null ? + unoptimizedScanTimer.getTotalDurationMsLocked(rawRealtimeMs) : 0; + final long unoptimizedScanMaxTime = unoptimizedScanTimer != null ? + unoptimizedScanTimer.getMaxDurationMsLocked(rawRealtimeMs) : 0; + // Unoptimized bg scan timer. Unpooled and since reset (regardless of 'which'). + final Timer unoptimizedScanTimerBg = + u.getBluetoothUnoptimizedScanBackgroundTimer(); + final long unoptimizedScanTotalTimeBg = unoptimizedScanTimerBg != null ? + unoptimizedScanTimerBg.getTotalDurationMsLocked(rawRealtimeMs) : 0; + final long unoptimizedScanMaxTimeBg = unoptimizedScanTimerBg != null ? + unoptimizedScanTimerBg.getMaxDurationMsLocked(rawRealtimeMs) : 0; sb.setLength(0); - sb.append(prefix); - sb.append(" "); - sb.append("Bluetooth Scan"); - sb.append(": "); if (actualTimeMs != totalTimeMs) { + sb.append(prefix); + sb.append(" Bluetooth Scan (total blamed realtime): "); formatTimeMs(sb, totalTimeMs); - sb.append("blamed realtime, "); + sb.append(" ("); + sb.append(count); + sb.append(" times)"); + if (bleTimer.isRunningLocked()) { + sb.append(" (currently running)"); + } + sb.append("\n"); } - formatTimeMs(sb, actualTimeMs); // since reset, regardless of 'which' - sb.append("realtime ("); + + sb.append(prefix); + sb.append(" Bluetooth Scan (total actual realtime): "); + formatTimeMs(sb, actualTimeMs); // since reset, ignores 'which' + sb.append(" ("); sb.append(count); sb.append(" times)"); if (bleTimer.isRunningLocked()) { - sb.append(" (running)"); + sb.append(" (currently running)"); } - if (actualTimeMsBg != 0 || countBg > 0) { - sb.append(", "); - formatTimeMs(sb, actualTimeMsBg); // since reset, regardless of 'which' - sb.append("background ("); + sb.append("\n"); + if (actualTimeMsBg > 0 || countBg > 0) { + sb.append(prefix); + sb.append(" Bluetooth Scan (background realtime): "); + formatTimeMs(sb, actualTimeMsBg); // since reset, ignores 'which' + sb.append(" ("); sb.append(countBg); sb.append(" times)"); + if (bleTimerBg != null && bleTimerBg.isRunningLocked()) { + sb.append(" (currently running in background)"); + } + sb.append("\n"); } - sb.append("; Results count "); + + sb.append(prefix); + sb.append(" Bluetooth Scan Results: "); sb.append(resultCount); + sb.append(" ("); + sb.append(resultCountBg); + sb.append(" in background)"); + + if (unoptimizedScanTotalTime > 0 || unoptimizedScanTotalTimeBg > 0) { + sb.append("\n"); + sb.append(prefix); + sb.append(" Unoptimized Bluetooth Scan (realtime): "); + formatTimeMs(sb, unoptimizedScanTotalTime); // since reset, ignores 'which' + sb.append(" (max "); + formatTimeMs(sb, unoptimizedScanMaxTime); // since reset, ignores 'which' + sb.append(")"); + if (unoptimizedScanTimer != null + && unoptimizedScanTimer.isRunningLocked()) { + sb.append(" (currently running unoptimized)"); + } + if (unoptimizedScanTimerBg != null && unoptimizedScanTotalTimeBg > 0) { + sb.append("\n"); + sb.append(prefix); + sb.append(" Unoptimized Bluetooth Scan (background realtime): "); + formatTimeMs(sb, unoptimizedScanTotalTimeBg); // since reset + sb.append(" (max "); + formatTimeMs(sb, unoptimizedScanMaxTimeBg); // since reset + sb.append(")"); + if (unoptimizedScanTimerBg.isRunningLocked()) { + sb.append(" (currently running unoptimized in background)"); + } + } + } pw.println(sb.toString()); uidActivity = true; } @@ -4696,8 +4791,11 @@ public abstract class BatteryStats implements Parcelable { sb.append(wakelocks.keyAt(iw)); linePrefix = printWakeLock(sb, wl.getWakeTime(WAKE_TYPE_FULL), rawRealtime, "full", which, linePrefix); - linePrefix = printWakeLock(sb, wl.getWakeTime(WAKE_TYPE_PARTIAL), rawRealtime, + final Timer pTimer = wl.getWakeTime(WAKE_TYPE_PARTIAL); + linePrefix = printWakeLock(sb, pTimer, rawRealtime, "partial", which, linePrefix); + linePrefix = printWakeLock(sb, pTimer != null ? pTimer.getSubTimer() : null, + rawRealtime, "background partial", which, linePrefix); linePrefix = printWakeLock(sb, wl.getWakeTime(WAKE_TYPE_WINDOW), rawRealtime, "window", which, linePrefix); linePrefix = printWakeLock(sb, wl.getWakeTime(WAKE_TYPE_DRAW), rawRealtime, diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 372ffd623172..172ba89bb3bf 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -8175,6 +8175,15 @@ public final class Settings { */ public static final String TETHER_DUN_APN = "tether_dun_apn"; + /** + * Used to disable trying to talk to any available tethering offload HAL. + * + * Integer values are interpreted as boolean, and the absence of an explicit setting + * is interpreted as |false|. + * @hide + */ + public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled"; + /** * List of carrier apps which are whitelisted to prompt the user for install when * a sim card with matching uicc carrier privilege rules is inserted. diff --git a/core/java/android/view/AppTransitionAnimationSpec.java b/core/java/android/view/AppTransitionAnimationSpec.java index c6e1989e8b55..86a5fb761355 100644 --- a/core/java/android/view/AppTransitionAnimationSpec.java +++ b/core/java/android/view/AppTransitionAnimationSpec.java @@ -1,6 +1,6 @@ package android.view; -import android.graphics.Bitmap; +import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.os.Parcel; import android.os.Parcelable; @@ -15,19 +15,19 @@ import android.os.Parcelable; */ public class AppTransitionAnimationSpec implements Parcelable { public final int taskId; - public final Bitmap bitmap; + public final GraphicBuffer buffer; public final Rect rect; - public AppTransitionAnimationSpec(int taskId, Bitmap bitmap, Rect rect) { + public AppTransitionAnimationSpec(int taskId, GraphicBuffer buffer, Rect rect) { this.taskId = taskId; - this.bitmap = bitmap; this.rect = rect; + this.buffer = buffer; } public AppTransitionAnimationSpec(Parcel in) { taskId = in.readInt(); - bitmap = in.readParcelable(null); rect = in.readParcelable(null); + buffer = in.readParcelable(null); } @Override @@ -38,9 +38,8 @@ public class AppTransitionAnimationSpec implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(taskId); - dest.writeParcelable(bitmap, 0 /* flags */); dest.writeParcelable(rect, 0 /* flags */); - + dest.writeParcelable(buffer, 0); } public static final Parcelable.Creator<AppTransitionAnimationSpec> CREATOR @@ -56,6 +55,6 @@ public class AppTransitionAnimationSpec implements Parcelable { @Override public String toString() { - return "{taskId: " + taskId + ", bitmap: " + bitmap + ", rect: " + rect + "}"; + return "{taskId: " + taskId + ", buffer: " + buffer + ", rect: " + rect + "}"; } } diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index a2ff4f787b61..58a6a5e78803 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -26,6 +26,7 @@ import com.android.internal.policy.IShortcutService; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.graphics.Bitmap; +import android.graphics.GraphicBuffer; import android.graphics.Point; import android.graphics.Rect; import android.os.Bundle; @@ -96,9 +97,9 @@ interface IWindowManager int startHeight); void overridePendingAppTransitionClipReveal(int startX, int startY, int startWidth, int startHeight); - void overridePendingAppTransitionThumb(in Bitmap srcThumb, int startX, int startY, + void overridePendingAppTransitionThumb(in GraphicBuffer srcThumb, int startX, int startY, IRemoteCallback startedCallback, boolean scaleUp); - void overridePendingAppTransitionAspectScaledThumb(in Bitmap srcThumb, int startX, + void overridePendingAppTransitionAspectScaledThumb(in GraphicBuffer srcThumb, int startX, int startY, int targetWidth, int targetHeight, IRemoteCallback startedCallback, boolean scaleUp); /** diff --git a/core/java/android/view/KeyboardShortcutGroup.java b/core/java/android/view/KeyboardShortcutGroup.java index 78f0b30e7e20..52e9832eeb90 100644 --- a/core/java/android/view/KeyboardShortcutGroup.java +++ b/core/java/android/view/KeyboardShortcutGroup.java @@ -19,6 +19,7 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; @@ -58,6 +59,7 @@ public final class KeyboardShortcutGroup implements Parcelable { * @param isSystemGroup Set this to {@code true} if this is s system group. * @hide */ + @TestApi public KeyboardShortcutGroup(@Nullable CharSequence label, @NonNull List<KeyboardShortcutInfo> items, boolean isSystemGroup) { mLabel = label; @@ -70,6 +72,7 @@ public final class KeyboardShortcutGroup implements Parcelable { * @param isSystemGroup Set this to {@code true} if this is s system group. * @hide */ + @TestApi public KeyboardShortcutGroup(@Nullable CharSequence label, boolean isSystemGroup) { this(label, Collections.<KeyboardShortcutInfo>emptyList(), isSystemGroup); } @@ -96,6 +99,7 @@ public final class KeyboardShortcutGroup implements Parcelable { } /** @hide **/ + @TestApi public boolean isSystemGroup() { return mSystemGroup; } @@ -123,11 +127,11 @@ public final class KeyboardShortcutGroup implements Parcelable { public static final Creator<KeyboardShortcutGroup> CREATOR = new Creator<KeyboardShortcutGroup>() { - public KeyboardShortcutGroup createFromParcel(Parcel source) { - return new KeyboardShortcutGroup(source); - } - public KeyboardShortcutGroup[] newArray(int size) { - return new KeyboardShortcutGroup[size]; - } - }; + public KeyboardShortcutGroup createFromParcel(Parcel source) { + return new KeyboardShortcutGroup(source); + } + public KeyboardShortcutGroup[] newArray(int size) { + return new KeyboardShortcutGroup[size]; + } + }; } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 6450b57bb93e..3759f9e9d2f1 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -7874,19 +7874,21 @@ public final class ViewRootImpl implements ViewParent, @Override public void run() { + // mSource may be changed in calls below. + View source = mSource; + mSource = null; // The accessibility may be turned off while we were waiting so check again. if (AccessibilityManager.getInstance(mContext).isEnabled()) { mLastEventTimeMillis = SystemClock.uptimeMillis(); AccessibilityEvent event = AccessibilityEvent.obtain(); event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); event.setContentChangeTypes(mChangeTypes); - mSource.sendAccessibilityEventUnchecked(event); + source.sendAccessibilityEventUnchecked(event); } else { mLastEventTimeMillis = 0; } // In any case reset to initial state. - mSource.resetSubtreeAccessibilityStateChanged(); - mSource = null; + source.resetSubtreeAccessibilityStateChanged(); mChangeTypes = 0; } diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java index c6057ec4d1a7..401cac816ac5 100644 --- a/core/java/android/view/accessibility/AccessibilityRecord.java +++ b/core/java/android/view/accessibility/AccessibilityRecord.java @@ -117,7 +117,7 @@ public class AccessibilityRecord { * @throws IllegalStateException If called from an AccessibilityService. */ public void setSource(View source) { - setSource(source, AccessibilityNodeInfo.UNDEFINED_ITEM_ID); + setSource(source, AccessibilityNodeProvider.HOST_VIEW_ID); } /** diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index a2aff931ccff..02ecc501ea39 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -258,6 +258,11 @@ public final class AutofillManager { * @return The view, or {@code null} if not found */ @Nullable View findViewByAccessibilityIdTraversal(int viewId); + + /** + * Runs the specified action on the UI thread. + */ + void runOnUiThread(Runnable action); } /** @@ -1233,6 +1238,15 @@ public final class AutofillManager { return mService != null; } + private void post(Runnable runnable) { + final AutofillClient client = getClientLocked(); + if (client == null) { + if (sVerbose) Log.v(TAG, "ignoring post() because client is null"); + return; + } + client.runOnUiThread(runnable); + } + /** * View tracking information. Once all tracked views become invisible the session is finished. */ @@ -1516,8 +1530,7 @@ public final class AutofillManager { public void setState(boolean enabled, boolean resetSession, boolean resetClient) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post( - () -> afm.setState(enabled, resetSession, resetClient)); + afm.post(() -> afm.setState(enabled, resetSession, resetClient)); } } @@ -1525,8 +1538,7 @@ public final class AutofillManager { public void autofill(int sessionId, List<AutofillId> ids, List<AutofillValue> values) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post( - () -> afm.autofill(sessionId, ids, values)); + afm.post(() -> afm.autofill(sessionId, ids, values)); } } @@ -1535,8 +1547,7 @@ public final class AutofillManager { Intent fillInIntent) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post( - () -> afm.authenticate(sessionId, authenticationId, intent, fillInIntent)); + afm.post(() -> afm.authenticate(sessionId, authenticationId, intent, fillInIntent)); } } @@ -1545,9 +1556,8 @@ public final class AutofillManager { Rect anchorBounds, IAutofillWindowPresenter presenter) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post( - () -> afm.requestShowFillUi(sessionId, id, width, height, anchorBounds, - presenter)); + afm.post(() -> afm.requestShowFillUi(sessionId, id, width, height, anchorBounds, + presenter)); } } @@ -1555,7 +1565,7 @@ public final class AutofillManager { public void requestHideFillUi(int sessionId, AutofillId id) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post(() -> afm.requestHideFillUi(id)); + afm.post(() -> afm.requestHideFillUi(id)); } } @@ -1563,7 +1573,7 @@ public final class AutofillManager { public void notifyNoFillUi(int sessionId, AutofillId id) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post(() -> afm.notifyNoFillUi(sessionId, id)); + afm.post(() -> afm.notifyNoFillUi(sessionId, id)); } } @@ -1571,7 +1581,7 @@ public final class AutofillManager { public void startIntentSender(IntentSender intentSender) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post(() -> { + afm.post(() -> { try { afm.mContext.startIntentSender(intentSender, null, 0, 0, 0); } catch (IntentSender.SendIntentException e) { @@ -1586,7 +1596,7 @@ public final class AutofillManager { boolean saveOnAllViewsInvisible, AutofillId[] fillableIds) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.mContext.getMainThreadHandler().post(() -> + afm.post(() -> afm.setTrackedViews(sessionId, ids, saveOnAllViewsInvisible, fillableIds) ); } diff --git a/core/java/android/view/autofill/AutofillPopupWindow.java b/core/java/android/view/autofill/AutofillPopupWindow.java index cd16a245c9b4..5f476380b1c3 100644 --- a/core/java/android/view/autofill/AutofillPopupWindow.java +++ b/core/java/android/view/autofill/AutofillPopupWindow.java @@ -16,6 +16,8 @@ package android.view.autofill; +import static android.view.autofill.Helper.sVerbose; + import android.annotation.NonNull; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -186,6 +188,10 @@ public class AutofillPopupWindow extends PopupWindow { @Override public void showAsDropDown(View anchor, int xoff, int yoff, int gravity) { + if (sVerbose) { + Log.v(TAG, "showAsDropDown(): anchor=" + anchor + ", xoff=" + xoff + ", yoff=" + yoff + + ", isShowing(): " + isShowing()); + } if (isShowing()) { return; } diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl index 78566dfc458e..04f7c76c8e74 100644 --- a/core/java/com/android/internal/app/IBatteryStats.aidl +++ b/core/java/com/android/internal/app/IBatteryStats.aidl @@ -129,7 +129,7 @@ interface IBatteryStats { long getAwakeTimeBattery(); long getAwakeTimePlugged(); - void noteBleScanStarted(in WorkSource ws); + void noteBleScanStarted(in WorkSource ws, boolean isUnoptimized); void noteBleScanStopped(in WorkSource ws); void noteResetBleScan(); void noteBleScanResults(in WorkSource ws, int numNewResults); diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 31064ac73dff..1b0d3323b3d0 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -56,6 +56,7 @@ import android.util.LogWriter; import android.util.LongSparseArray; import android.util.LongSparseLongArray; import android.util.MutableInt; +import android.util.Pools; import android.util.PrintWriterPrinter; import android.util.Printer; import android.util.Slog; @@ -66,6 +67,7 @@ import android.util.TimeUtils; import android.util.Xml; import android.view.Display; +import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.net.NetworkStatsFactory; import com.android.internal.util.ArrayUtils; @@ -116,7 +118,7 @@ public class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version - private static final int VERSION = 158 + (USE_OLD_HISTORY ? 1000 : 0); + private static final int VERSION = 159 + (USE_OLD_HISTORY ? 1000 : 0); // Maximum number of items we will record in the history. private static final int MAX_HISTORY_ITEMS = 2000; @@ -173,7 +175,6 @@ public class BatteryStatsImpl extends BatteryStats { private final PlatformIdleStateCallback mPlatformIdleStateCallback; - final class MyHandler extends Handler { public MyHandler(Looper looper) { super(looper, null, true); @@ -228,11 +229,11 @@ public class BatteryStatsImpl extends BatteryStats { } public interface ExternalStatsSync { - public static final int UPDATE_CPU = 0x01; - public static final int UPDATE_WIFI = 0x02; - public static final int UPDATE_RADIO = 0x04; - public static final int UPDATE_BT = 0x08; - public static final int UPDATE_ALL = UPDATE_CPU | UPDATE_WIFI | UPDATE_RADIO | UPDATE_BT; + int UPDATE_CPU = 0x01; + int UPDATE_WIFI = 0x02; + int UPDATE_RADIO = 0x04; + int UPDATE_BT = 0x08; + int UPDATE_ALL = UPDATE_CPU | UPDATE_WIFI | UPDATE_RADIO | UPDATE_BT; void scheduleSync(String reason, int flags); void scheduleCpuSyncDueToRemovedUid(int uid); @@ -572,8 +573,6 @@ public class BatteryStatsImpl extends BatteryStats { private int mMinLearnedBatteryCapacity = -1; private int mMaxLearnedBatteryCapacity = -1; - private final NetworkStats.Entry mTmpNetworkStatsEntry = new NetworkStats.Entry(); - private long[] mCpuFreqs; private PowerProfile mPowerProfile; @@ -637,19 +636,9 @@ public class BatteryStatsImpl extends BatteryStats { private void init(Clocks clocks) { mClocks = clocks; - mMobileNetworkStats = new NetworkStats[] { - new NetworkStats(mClocks.elapsedRealtime(), 50), - new NetworkStats(mClocks.elapsedRealtime(), 50), - new NetworkStats(mClocks.elapsedRealtime(), 50) - }; - mWifiNetworkStats = new NetworkStats[] { - new NetworkStats(mClocks.elapsedRealtime(), 50), - new NetworkStats(mClocks.elapsedRealtime(), 50), - new NetworkStats(mClocks.elapsedRealtime(), 50) - }; } - public static interface TimeBaseObs { + public interface TimeBaseObs { void onTimeStarted(long elapsedRealtime, long baseUptime, long baseRealtime); void onTimeStopped(long elapsedRealtime, long baseUptime, long baseRealtime); } @@ -862,21 +851,19 @@ public class BatteryStatsImpl extends BatteryStats { final AtomicInteger mCount = new AtomicInteger(); final TimeBase mTimeBase; int mLoadedCount; - int mLastCount; int mUnpluggedCount; int mPluggedCount; - Counter(TimeBase timeBase, Parcel in) { + public Counter(TimeBase timeBase, Parcel in) { mTimeBase = timeBase; mPluggedCount = in.readInt(); mCount.set(mPluggedCount); mLoadedCount = in.readInt(); - mLastCount = 0; mUnpluggedCount = in.readInt(); timeBase.add(this); } - Counter(TimeBase timeBase) { + public Counter(TimeBase timeBase) { mTimeBase = timeBase; timeBase.add(this); } @@ -887,11 +874,12 @@ public class BatteryStatsImpl extends BatteryStats { out.writeInt(mUnpluggedCount); } + @Override public void onTimeStarted(long elapsedRealtime, long baseUptime, long baseRealtime) { mUnpluggedCount = mPluggedCount; - mCount.set(mPluggedCount); } + @Override public void onTimeStopped(long elapsedRealtime, long baseUptime, long baseRealtime) { mPluggedCount = mCount.get(); } @@ -926,17 +914,22 @@ public class BatteryStatsImpl extends BatteryStats { public void logState(Printer pw, String prefix) { pw.println(prefix + "mCount=" + mCount.get() - + " mLoadedCount=" + mLoadedCount + " mLastCount=" + mLastCount + + " mLoadedCount=" + mLoadedCount + " mUnpluggedCount=" + mUnpluggedCount + " mPluggedCount=" + mPluggedCount); } - void stepAtomic() { - mCount.incrementAndGet(); + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + public void stepAtomic() { + if (mTimeBase.isRunning()) { + mCount.incrementAndGet(); + } } void addAtomic(int delta) { - mCount.addAndGet(delta); + if (mTimeBase.isRunning()) { + mCount.addAndGet(delta); + } } /** @@ -944,7 +937,7 @@ public class BatteryStatsImpl extends BatteryStats { */ void reset(boolean detachIfReset) { mCount.set(0); - mLoadedCount = mLastCount = mPluggedCount = mUnpluggedCount = 0; + mLoadedCount = mPluggedCount = mUnpluggedCount = 0; if (detachIfReset) { detach(); } @@ -954,15 +947,16 @@ public class BatteryStatsImpl extends BatteryStats { mTimeBase.remove(this); } - void writeSummaryFromParcelLocked(Parcel out) { + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + public void writeSummaryFromParcelLocked(Parcel out) { int count = mCount.get(); out.writeInt(count); } - void readSummaryFromParcelLocked(Parcel in) { + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + public void readSummaryFromParcelLocked(Parcel in) { mLoadedCount = in.readInt(); mCount.set(mLoadedCount); - mLastCount = 0; mUnpluggedCount = mPluggedCount = mLoadedCount; } } @@ -998,7 +992,6 @@ public class BatteryStatsImpl extends BatteryStats { @Override public void onTimeStarted(long elapsedRealTime, long baseUptime, long baseRealtime) { mUnpluggedCounts = copyArray(mPluggedCounts, mUnpluggedCounts); - mCounts = copyArray(mPluggedCounts, mCounts); } @Override @@ -1029,11 +1022,13 @@ public class BatteryStatsImpl extends BatteryStats { if (counts == null) { return; } - if (mCounts == null) { - mCounts = new long[counts.length]; - } - for (int i = 0; i < counts.length; ++i) { - mCounts[i] += counts[i]; + if (mTimeBase.isRunning()) { + if (mCounts == null) { + mCounts = new long[counts.length]; + } + for (int i = 0; i < counts.length; ++i) { + mCounts[i] += counts[i]; + } } } @@ -1104,13 +1099,13 @@ public class BatteryStatsImpl extends BatteryStats { } } - private void fillArray(long[] a, long val) { + private static void fillArray(long[] a, long val) { if (a != null) { Arrays.fill(a, val); } } - private void subtract(@NonNull long[] val, long[] toSubtract) { + private static void subtract(@NonNull long[] val, long[] toSubtract) { if (toSubtract == null) { return; } @@ -1119,7 +1114,7 @@ public class BatteryStatsImpl extends BatteryStats { } } - private long[] copyArray(long[] src, long[] dest) { + private static long[] copyArray(long[] src, long[] dest) { if (src == null) { return null; } else { @@ -1162,7 +1157,6 @@ public class BatteryStatsImpl extends BatteryStats { @Override public void onTimeStarted(long elapsedRealtime, long baseUptime, long baseRealtime) { mUnpluggedCount = mPluggedCount; - mCount = mPluggedCount; } @Override @@ -1189,7 +1183,9 @@ public class BatteryStatsImpl extends BatteryStats { } void addCountLocked(long count) { - mCount += count; + if (mTimeBase.isRunning()) { + mCount += count; + } } /** @@ -4193,7 +4189,10 @@ public class BatteryStatsImpl extends BatteryStats { getUidStatsLocked(uid).noteMobileRadioApWakeupLocked(); } - public void noteMobileRadioPowerState(int powerState, long timestampNs, int uid) { + /** + * Updates the radio power state and returns true if an external stats collection should occur. + */ + public boolean noteMobileRadioPowerStateLocked(int powerState, long timestampNs, int uid) { final long elapsedRealtime = mClocks.elapsedRealtime(); final long uptime = mClocks.uptimeMillis(); if (mMobileRadioPowerState != powerState) { @@ -4230,13 +4229,15 @@ public class BatteryStatsImpl extends BatteryStats { mMobileRadioActivePerAppTimer.startRunningLocked(elapsedRealtime); } else { mMobileRadioActiveTimer.stopRunningLocked(realElapsedRealtimeMs); - updateMobileRadioStateLocked(realElapsedRealtimeMs, null); mMobileRadioActivePerAppTimer.stopRunningLocked(realElapsedRealtimeMs); + // Tell the caller to collect radio network/power stats. + return true; } } + return false; } - public void notePowerSaveMode(boolean enabled) { + public void notePowerSaveModeLocked(boolean enabled) { if (mPowerSaveModeEnabled != enabled) { int stepState = enabled ? STEP_LEVEL_MODE_POWER_SAVE : 0; mModStepMode |= (mCurStepMode&STEP_LEVEL_MODE_POWER_SAVE) ^ stepState; @@ -4821,7 +4822,7 @@ public class BatteryStatsImpl extends BatteryStats { } } - private void noteBluetoothScanStartedLocked(int uid) { + private void noteBluetoothScanStartedLocked(int uid, boolean isUnoptimized) { uid = mapUid(uid); final long elapsedRealtime = mClocks.elapsedRealtime(); final long uptime = mClocks.uptimeMillis(); @@ -4833,13 +4834,13 @@ public class BatteryStatsImpl extends BatteryStats { mBluetoothScanTimer.startRunningLocked(elapsedRealtime); } mBluetoothScanNesting++; - getUidStatsLocked(uid).noteBluetoothScanStartedLocked(elapsedRealtime); + getUidStatsLocked(uid).noteBluetoothScanStartedLocked(elapsedRealtime, isUnoptimized); } - public void noteBluetoothScanStartedFromSourceLocked(WorkSource ws) { + public void noteBluetoothScanStartedFromSourceLocked(WorkSource ws, boolean isUnoptimized) { final int N = ws.size(); for (int i = 0; i < N; i++) { - noteBluetoothScanStartedLocked(ws.get(i)); + noteBluetoothScanStartedLocked(ws.get(i), isUnoptimized); } } @@ -5236,28 +5237,26 @@ public class BatteryStatsImpl extends BatteryStats { public void noteNetworkInterfaceTypeLocked(String iface, int networkType) { if (TextUtils.isEmpty(iface)) return; - if (ConnectivityManager.isNetworkTypeMobile(networkType)) { - mMobileIfaces = includeInStringArray(mMobileIfaces, iface); - if (DEBUG) Slog.d(TAG, "Note mobile iface " + iface + ": " + mMobileIfaces); - } else { - mMobileIfaces = excludeFromStringArray(mMobileIfaces, iface); - if (DEBUG) Slog.d(TAG, "Note non-mobile iface " + iface + ": " + mMobileIfaces); - } - if (ConnectivityManager.isNetworkTypeWifi(networkType)) { - mWifiIfaces = includeInStringArray(mWifiIfaces, iface); - if (DEBUG) Slog.d(TAG, "Note wifi iface " + iface + ": " + mWifiIfaces); - } else { - mWifiIfaces = excludeFromStringArray(mWifiIfaces, iface); - if (DEBUG) Slog.d(TAG, "Note non-wifi iface " + iface + ": " + mWifiIfaces); + + synchronized (mModemNetworkLock) { + if (ConnectivityManager.isNetworkTypeMobile(networkType)) { + mModemIfaces = includeInStringArray(mModemIfaces, iface); + if (DEBUG) Slog.d(TAG, "Note mobile iface " + iface + ": " + mModemIfaces); + } else { + mModemIfaces = excludeFromStringArray(mModemIfaces, iface); + if (DEBUG) Slog.d(TAG, "Note non-mobile iface " + iface + ": " + mModemIfaces); + } } - } - public void noteNetworkStatsEnabledLocked() { - // During device boot, qtaguid isn't enabled until after the inital - // loading of battery stats. Now that they're enabled, take our initial - // snapshot for future delta calculation. - updateMobileRadioStateLocked(mClocks.elapsedRealtime(), null); - updateWifiStateLocked(null); + synchronized (mWifiNetworkLock) { + if (ConnectivityManager.isNetworkTypeWifi(networkType)) { + mWifiIfaces = includeInStringArray(mWifiIfaces, iface); + if (DEBUG) Slog.d(TAG, "Note wifi iface " + iface + ": " + mWifiIfaces); + } else { + mWifiIfaces = excludeFromStringArray(mWifiIfaces, iface); + if (DEBUG) Slog.d(TAG, "Note non-wifi iface " + iface + ": " + mWifiIfaces); + } + } } @Override public long getScreenOnTime(long elapsedRealtimeUs, int which) { @@ -5611,7 +5610,9 @@ public class BatteryStatsImpl extends BatteryStats { /** Total time spent by the uid holding any partial wakelocks. */ DualTimer mAggregatedPartialWakelockTimer; DualTimer mBluetoothScanTimer; + DualTimer mBluetoothUnoptimizedScanTimer; Counter mBluetoothScanResultCounter; + Counter mBluetoothScanResultBgCounter; int mProcessState = ActivityManager.PROCESS_STATE_NONEXISTENT; StopwatchTimer[] mProcessStateTimer; @@ -6096,20 +6097,41 @@ public class BatteryStatsImpl extends BatteryStats { return mBluetoothScanTimer; } - public void noteBluetoothScanStartedLocked(long elapsedRealtimeMs) { + public DualTimer createBluetoothUnoptimizedScanTimerLocked() { + if (mBluetoothUnoptimizedScanTimer == null) { + mBluetoothUnoptimizedScanTimer = new DualTimer(mBsi.mClocks, Uid.this, + BLUETOOTH_UNOPTIMIZED_SCAN_ON, null, + mBsi.mOnBatteryTimeBase, mOnBatteryBackgroundTimeBase); + } + return mBluetoothUnoptimizedScanTimer; + } + + public void noteBluetoothScanStartedLocked(long elapsedRealtimeMs, boolean isUnoptimized) { createBluetoothScanTimerLocked().startRunningLocked(elapsedRealtimeMs); + if (isUnoptimized) { + createBluetoothUnoptimizedScanTimerLocked().startRunningLocked(elapsedRealtimeMs); + } } public void noteBluetoothScanStoppedLocked(long elapsedRealtimeMs) { if (mBluetoothScanTimer != null) { mBluetoothScanTimer.stopRunningLocked(elapsedRealtimeMs); } + // In the ble code, a scan cannot change types and nested starts are not possible. + // So if an unoptimizedScan is running, it is now being stopped. + if (mBluetoothUnoptimizedScanTimer != null + && mBluetoothUnoptimizedScanTimer.isRunningLocked()) { + mBluetoothUnoptimizedScanTimer.stopRunningLocked(elapsedRealtimeMs); + } } public void noteResetBluetoothScanLocked(long elapsedRealtimeMs) { if (mBluetoothScanTimer != null) { mBluetoothScanTimer.stopAllRunningLocked(elapsedRealtimeMs); } + if (mBluetoothUnoptimizedScanTimer != null) { + mBluetoothUnoptimizedScanTimer.stopAllRunningLocked(elapsedRealtimeMs); + } } public Counter createBluetoothScanResultCounterLocked() { @@ -6119,8 +6141,17 @@ public class BatteryStatsImpl extends BatteryStats { return mBluetoothScanResultCounter; } + public Counter createBluetoothScanResultBgCounterLocked() { + if (mBluetoothScanResultBgCounter == null) { + mBluetoothScanResultBgCounter = new Counter(mOnBatteryBackgroundTimeBase); + } + return mBluetoothScanResultBgCounter; + } + public void noteBluetoothScanResultsLocked(int numNewResults) { createBluetoothScanResultCounterLocked().addAtomic(numNewResults); + // Uses background timebase, so the count will only be incremented if uid in background. + createBluetoothScanResultBgCounterLocked().addAtomic(numNewResults); } @Override @@ -6277,10 +6308,28 @@ public class BatteryStatsImpl extends BatteryStats { } @Override + public Timer getBluetoothUnoptimizedScanTimer() { + return mBluetoothUnoptimizedScanTimer; + } + + @Override + public Timer getBluetoothUnoptimizedScanBackgroundTimer() { + if (mBluetoothUnoptimizedScanTimer == null) { + return null; + } + return mBluetoothUnoptimizedScanTimer.getSubTimer(); + } + + @Override public Counter getBluetoothScanResultCounter() { return mBluetoothScanResultCounter; } + @Override + public Counter getBluetoothScanResultBgCounter() { + return mBluetoothScanResultBgCounter; + } + void makeProcessState(int i, Parcel in) { if (i < 0 || i >= NUM_PROCESS_STATE) return; @@ -6531,9 +6580,13 @@ public class BatteryStatsImpl extends BatteryStats { active |= !resetTimerIfNotNull(mForegroundActivityTimer, false); active |= !resetTimerIfNotNull(mAggregatedPartialWakelockTimer, false); active |= !resetTimerIfNotNull(mBluetoothScanTimer, false); + active |= !resetTimerIfNotNull(mBluetoothUnoptimizedScanTimer, false); if (mBluetoothScanResultCounter != null) { mBluetoothScanResultCounter.reset(false); } + if (mBluetoothScanResultBgCounter != null) { + mBluetoothScanResultBgCounter.reset(false); + } if (mProcessStateTimer != null) { for (int i = 0; i < NUM_PROCESS_STATE; i++) { @@ -6731,10 +6784,18 @@ public class BatteryStatsImpl extends BatteryStats { mBluetoothScanTimer.detach(); mBluetoothScanTimer = null; } + if (mBluetoothUnoptimizedScanTimer != null) { + mBluetoothUnoptimizedScanTimer.detach(); + mBluetoothUnoptimizedScanTimer = null; + } if (mBluetoothScanResultCounter != null) { mBluetoothScanResultCounter.detach(); mBluetoothScanResultCounter = null; } + if (mBluetoothScanResultBgCounter != null) { + mBluetoothScanResultBgCounter.detach(); + mBluetoothScanResultBgCounter = null; + } if (mUserActivityCounters != null) { for (int i=0; i<NUM_USER_ACTIVITY_TYPES; i++) { mUserActivityCounters[i].detach(); @@ -6919,12 +6980,24 @@ public class BatteryStatsImpl extends BatteryStats { } else { out.writeInt(0); } + if (mBluetoothUnoptimizedScanTimer != null) { + out.writeInt(1); + mBluetoothUnoptimizedScanTimer.writeToParcel(out, elapsedRealtimeUs); + } else { + out.writeInt(0); + } if (mBluetoothScanResultCounter != null) { out.writeInt(1); mBluetoothScanResultCounter.writeToParcel(out); } else { out.writeInt(0); } + if (mBluetoothScanResultBgCounter != null) { + out.writeInt(1); + mBluetoothScanResultBgCounter.writeToParcel(out); + } else { + out.writeInt(0); + } for (int i = 0; i < NUM_PROCESS_STATE; i++) { if (mProcessStateTimer[i] != null) { out.writeInt(1); @@ -7033,7 +7106,8 @@ public class BatteryStatsImpl extends BatteryStats { for (int j = 0; j < numWakelocks; j++) { String wakelockName = in.readString(); Uid.Wakelock wakelock = new Wakelock(mBsi, this); - wakelock.readFromParcelLocked(timeBase, screenOffTimeBase, in); + wakelock.readFromParcelLocked( + timeBase, screenOffTimeBase, mOnBatteryScreenOffBackgroundTimeBase, in); mWakelockStats.add(wakelockName, wakelock); } @@ -7168,10 +7242,22 @@ public class BatteryStatsImpl extends BatteryStats { mBluetoothScanTimer = null; } if (in.readInt() != 0) { + mBluetoothUnoptimizedScanTimer = new DualTimer(mBsi.mClocks, Uid.this, + BLUETOOTH_UNOPTIMIZED_SCAN_ON, null, + mBsi.mOnBatteryTimeBase, mOnBatteryBackgroundTimeBase, in); + } else { + mBluetoothUnoptimizedScanTimer = null; + } + if (in.readInt() != 0) { mBluetoothScanResultCounter = new Counter(mBsi.mOnBatteryTimeBase, in); } else { mBluetoothScanResultCounter = null; } + if (in.readInt() != 0) { + mBluetoothScanResultBgCounter = new Counter(mOnBatteryBackgroundTimeBase, in); + } else { + mBluetoothScanResultBgCounter = null; + } mProcessState = ActivityManager.PROCESS_STATE_NONEXISTENT; for (int i = 0; i < NUM_PROCESS_STATE; i++) { if (in.readInt() != 0) { @@ -7298,8 +7384,9 @@ public class BatteryStatsImpl extends BatteryStats { /** * How long (in ms) this uid has been keeping the device partially awake. + * Tracks both the total time and the time while the app was in the background. */ - DurationTimer mTimerPartial; + DualTimer mTimerPartial; /** * How long (in ms) this uid has been keeping the device fully awake. @@ -7344,13 +7431,13 @@ public class BatteryStatsImpl extends BatteryStats { * @param in the Parcel to be read from. * return a new Timer, or null. */ - private DurationTimer readDurationTimerFromParcel(int type, - ArrayList<StopwatchTimer> pool, TimeBase timeBase, Parcel in) { + private DualTimer readDualTimerFromParcel(int type, ArrayList<StopwatchTimer> pool, + TimeBase timeBase, TimeBase bgTimeBase, Parcel in) { if (in.readInt() == 0) { return null; } - return new DurationTimer(mBsi.mClocks, mUid, type, pool, timeBase, in); + return new DualTimer(mBsi.mClocks, mUid, type, pool, timeBase, bgTimeBase, in); } boolean reset() { @@ -7388,9 +7475,10 @@ public class BatteryStatsImpl extends BatteryStats { return !wlactive; } - void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, Parcel in) { - mTimerPartial = readDurationTimerFromParcel(WAKE_TYPE_PARTIAL, - mBsi.mPartialTimers, screenOffTimeBase, in); + void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, + TimeBase screenOffBgTimeBase, Parcel in) { + mTimerPartial = readDualTimerFromParcel(WAKE_TYPE_PARTIAL, + mBsi.mPartialTimers, screenOffTimeBase, screenOffBgTimeBase, in); mTimerFull = readStopwatchTimerFromParcel(WAKE_TYPE_FULL, mBsi.mFullTimers, timeBase, in); mTimerWindow = readStopwatchTimerFromParcel(WAKE_TYPE_WINDOW, @@ -7416,49 +7504,6 @@ public class BatteryStatsImpl extends BatteryStats { default: throw new IllegalArgumentException("type = " + type); } } - - public StopwatchTimer getStopwatchTimer(int type) { - switch (type) { - case WAKE_TYPE_PARTIAL: { - DurationTimer t = mTimerPartial; - if (t == null) { - t = new DurationTimer(mBsi.mClocks, mUid, WAKE_TYPE_PARTIAL, - mBsi.mPartialTimers, mBsi.mOnBatteryScreenOffTimeBase); - mTimerPartial = t; - } - return t; - } - case WAKE_TYPE_FULL: { - StopwatchTimer t = mTimerFull; - if (t == null) { - t = new StopwatchTimer(mBsi.mClocks, mUid, WAKE_TYPE_FULL, - mBsi.mFullTimers, mBsi.mOnBatteryTimeBase); - mTimerFull = t; - } - return t; - } - case WAKE_TYPE_WINDOW: { - StopwatchTimer t = mTimerWindow; - if (t == null) { - t = new StopwatchTimer(mBsi.mClocks, mUid, WAKE_TYPE_WINDOW, - mBsi.mWindowTimers, mBsi.mOnBatteryTimeBase); - mTimerWindow = t; - } - return t; - } - case WAKE_TYPE_DRAW: { - StopwatchTimer t = mTimerDraw; - if (t == null) { - t = new StopwatchTimer(mBsi.mClocks, mUid, WAKE_TYPE_DRAW, - mBsi.mDrawTimers, mBsi.mOnBatteryTimeBase); - mTimerDraw = t; - } - return t; - } - default: - throw new IllegalArgumentException("type=" + type); - } - } } public static class Sensor extends BatteryStats.Uid.Sensor { @@ -8351,16 +8396,16 @@ public class BatteryStatsImpl extends BatteryStats { Wakelock wl = new Wakelock(mBsi, this); mWakelockStats.add(wlName, wl); if (in.readInt() != 0) { - wl.getStopwatchTimer(WAKE_TYPE_FULL).readSummaryFromParcelLocked(in); + getWakelockTimerLocked(wl, WAKE_TYPE_FULL).readSummaryFromParcelLocked(in); } if (in.readInt() != 0) { - wl.getStopwatchTimer(WAKE_TYPE_PARTIAL).readSummaryFromParcelLocked(in); + getWakelockTimerLocked(wl, WAKE_TYPE_PARTIAL).readSummaryFromParcelLocked(in); } if (in.readInt() != 0) { - wl.getStopwatchTimer(WAKE_TYPE_WINDOW).readSummaryFromParcelLocked(in); + getWakelockTimerLocked(wl, WAKE_TYPE_WINDOW).readSummaryFromParcelLocked(in); } if (in.readInt() != 0) { - wl.getStopwatchTimer(WAKE_TYPE_DRAW).readSummaryFromParcelLocked(in); + getWakelockTimerLocked(wl, WAKE_TYPE_DRAW).readSummaryFromParcelLocked(in); } } @@ -8416,10 +8461,57 @@ public class BatteryStatsImpl extends BatteryStats { } } + public StopwatchTimer getWakelockTimerLocked(Wakelock wl, int type) { + if (wl == null) { + return null; + } + switch (type) { + case WAKE_TYPE_PARTIAL: { + DualTimer t = wl.mTimerPartial; + if (t == null) { + t = new DualTimer(mBsi.mClocks, this, WAKE_TYPE_PARTIAL, + mBsi.mPartialTimers, mBsi.mOnBatteryScreenOffTimeBase, + mOnBatteryScreenOffBackgroundTimeBase); + wl.mTimerPartial = t; + } + return t; + } + case WAKE_TYPE_FULL: { + StopwatchTimer t = wl.mTimerFull; + if (t == null) { + t = new StopwatchTimer(mBsi.mClocks, this, WAKE_TYPE_FULL, + mBsi.mFullTimers, mBsi.mOnBatteryTimeBase); + wl.mTimerFull = t; + } + return t; + } + case WAKE_TYPE_WINDOW: { + StopwatchTimer t = wl.mTimerWindow; + if (t == null) { + t = new StopwatchTimer(mBsi.mClocks, this, WAKE_TYPE_WINDOW, + mBsi.mWindowTimers, mBsi.mOnBatteryTimeBase); + wl.mTimerWindow = t; + } + return t; + } + case WAKE_TYPE_DRAW: { + StopwatchTimer t = wl.mTimerDraw; + if (t == null) { + t = new StopwatchTimer(mBsi.mClocks, this, WAKE_TYPE_DRAW, + mBsi.mDrawTimers, mBsi.mOnBatteryTimeBase); + wl.mTimerDraw = t; + } + return t; + } + default: + throw new IllegalArgumentException("type=" + type); + } + } + public void noteStartWakeLocked(int pid, String name, int type, long elapsedRealtimeMs) { Wakelock wl = mWakelockStats.startObject(name); if (wl != null) { - wl.getStopwatchTimer(type).startRunningLocked(elapsedRealtimeMs); + getWakelockTimerLocked(wl, type).startRunningLocked(elapsedRealtimeMs); } if (type == WAKE_TYPE_PARTIAL) { createAggregatedPartialWakelockTimerLocked().startRunningLocked(elapsedRealtimeMs); @@ -8435,7 +8527,7 @@ public class BatteryStatsImpl extends BatteryStats { public void noteStopWakeLocked(int pid, String name, int type, long elapsedRealtimeMs) { Wakelock wl = mWakelockStats.stopObject(name); if (wl != null) { - wl.getStopwatchTimer(type).stopRunningLocked(elapsedRealtimeMs); + getWakelockTimerLocked(wl, type).stopRunningLocked(elapsedRealtimeMs); } if (type == WAKE_TYPE_PARTIAL) { if (mAggregatedPartialWakelockTimer != null) { @@ -8613,27 +8705,25 @@ public class BatteryStatsImpl extends BatteryStats { mPlatformIdleStateCallback = null; } - public void setPowerProfile(PowerProfile profile) { - synchronized (this) { - mPowerProfile = profile; + public void setPowerProfileLocked(PowerProfile profile) { + mPowerProfile = profile; - // We need to initialize the KernelCpuSpeedReaders to read from - // the first cpu of each core. Once we have the PowerProfile, we have access to this - // information. - final int numClusters = mPowerProfile.getNumCpuClusters(); - mKernelCpuSpeedReaders = new KernelCpuSpeedReader[numClusters]; - int firstCpuOfCluster = 0; - for (int i = 0; i < numClusters; i++) { - final int numSpeedSteps = mPowerProfile.getNumSpeedStepsInCpuCluster(i); - mKernelCpuSpeedReaders[i] = new KernelCpuSpeedReader(firstCpuOfCluster, - numSpeedSteps); - firstCpuOfCluster += mPowerProfile.getNumCoresInCpuCluster(i); - } + // We need to initialize the KernelCpuSpeedReaders to read from + // the first cpu of each core. Once we have the PowerProfile, we have access to this + // information. + final int numClusters = mPowerProfile.getNumCpuClusters(); + mKernelCpuSpeedReaders = new KernelCpuSpeedReader[numClusters]; + int firstCpuOfCluster = 0; + for (int i = 0; i < numClusters; i++) { + final int numSpeedSteps = mPowerProfile.getNumSpeedStepsInCpuCluster(i); + mKernelCpuSpeedReaders[i] = new KernelCpuSpeedReader(firstCpuOfCluster, + numSpeedSteps); + firstCpuOfCluster += mPowerProfile.getNumCoresInCpuCluster(i); + } - if (mEstimatedBatteryCapacity == -1) { - // Initialize the estimated battery capacity to a known preset one. - mEstimatedBatteryCapacity = (int) mPowerProfile.getBatteryCapacity(); - } + if (mEstimatedBatteryCapacity == -1) { + // Initialize the estimated battery capacity to a known preset one. + mEstimatedBatteryCapacity = (int) mPowerProfile.getBatteryCapacity(); } } @@ -8641,7 +8731,7 @@ public class BatteryStatsImpl extends BatteryStats { mCallback = cb; } - public void setRadioScanningTimeout(long timeout) { + public void setRadioScanningTimeoutLocked(long timeout) { if (mPhoneSignalScanningTimer != null) { mPhoneSignalScanningTimer.setTimeout(timeout); } @@ -9333,277 +9423,293 @@ public class BatteryStatsImpl extends BatteryStats { } } - private String[] mMobileIfaces = EmptyArray.STRING; + private final NetworkStatsFactory mNetworkStatsFactory = new NetworkStatsFactory(); + private final Pools.Pool<NetworkStats> mNetworkStatsPool = new Pools.SynchronizedPool<>(6); + + private final Object mWifiNetworkLock = new Object(); + + @GuardedBy("mWifiNetworkLock") private String[] mWifiIfaces = EmptyArray.STRING; - private final NetworkStatsFactory mNetworkStatsFactory = new NetworkStatsFactory(); + @GuardedBy("mWifiNetworkLock") + private NetworkStats mLastWifiNetworkStats = new NetworkStats(0, -1); - private static final int NETWORK_STATS_LAST = 0; - private static final int NETWORK_STATS_NEXT = 1; - private static final int NETWORK_STATS_DELTA = 2; + private final Object mModemNetworkLock = new Object(); - private NetworkStats[] mMobileNetworkStats; - private NetworkStats[] mWifiNetworkStats; + @GuardedBy("mModemNetworkLock") + private String[] mModemIfaces = EmptyArray.STRING; - /** - * Retrieves the delta of network stats for the given network ifaces. Uses networkStatsBuffer - * as a buffer of NetworkStats objects to cycle through when computing deltas. - */ - private NetworkStats getNetworkStatsDeltaLocked(String[] ifaces, - NetworkStats[] networkStatsBuffer) - throws IOException { - if (!SystemProperties.getBoolean(NetworkManagementSocketTagger.PROP_QTAGUID_ENABLED, - false)) { - return null; - } + @GuardedBy("mModemNetworkLock") + private NetworkStats mLastModemNetworkStats = new NetworkStats(0, -1); - final NetworkStats stats = mNetworkStatsFactory.readNetworkStatsDetail(NetworkStats.UID_ALL, - ifaces, NetworkStats.TAG_NONE, networkStatsBuffer[NETWORK_STATS_NEXT]); - networkStatsBuffer[NETWORK_STATS_DELTA] = NetworkStats.subtract(stats, - networkStatsBuffer[NETWORK_STATS_LAST], null, null, - networkStatsBuffer[NETWORK_STATS_DELTA]); - networkStatsBuffer[NETWORK_STATS_NEXT] = networkStatsBuffer[NETWORK_STATS_LAST]; - networkStatsBuffer[NETWORK_STATS_LAST] = stats; - return networkStatsBuffer[NETWORK_STATS_DELTA]; + private NetworkStats readNetworkStatsLocked(String[] ifaces) { + try { + if (!ArrayUtils.isEmpty(ifaces)) { + return mNetworkStatsFactory.readNetworkStatsDetail(NetworkStats.UID_ALL, ifaces, + NetworkStats.TAG_NONE, mNetworkStatsPool.acquire()); + } + } catch (IOException e) { + Slog.e(TAG, "failed to read network stats for ifaces: " + Arrays.toString(ifaces)); + } + return null; } /** * Distribute WiFi energy info and network traffic to apps. * @param info The energy information from the WiFi controller. */ - public void updateWifiStateLocked(@Nullable final WifiActivityEnergyInfo info) { + public void updateWifiState(@Nullable final WifiActivityEnergyInfo info) { if (DEBUG_ENERGY) { - Slog.d(TAG, "Updating wifi stats"); + Slog.d(TAG, "Updating wifi stats: " + Arrays.toString(mWifiIfaces)); } - final long elapsedRealtimeMs = mClocks.elapsedRealtime(); + // Grab a separate lock to acquire the network stats, which may do I/O. NetworkStats delta = null; - try { - if (!ArrayUtils.isEmpty(mWifiIfaces)) { - delta = getNetworkStatsDeltaLocked(mWifiIfaces, mWifiNetworkStats); + synchronized (mWifiNetworkLock) { + final NetworkStats latestStats = readNetworkStatsLocked(mWifiIfaces); + if (latestStats != null) { + delta = NetworkStats.subtract(latestStats, mLastWifiNetworkStats, null, null, + mNetworkStatsPool.acquire()); + mNetworkStatsPool.release(mLastWifiNetworkStats); + mLastWifiNetworkStats = latestStats; } - } catch (IOException e) { - Slog.wtf(TAG, "Failed to get wifi network stats", e); - return; - } - - if (!mOnBatteryInternal) { - return; } - SparseLongArray rxPackets = new SparseLongArray(); - SparseLongArray txPackets = new SparseLongArray(); - long totalTxPackets = 0; - long totalRxPackets = 0; - if (delta != null) { - final int size = delta.size(); - for (int i = 0; i < size; i++) { - final NetworkStats.Entry entry = delta.getValues(i, mTmpNetworkStatsEntry); - - if (DEBUG_ENERGY) { - Slog.d(TAG, "Wifi uid " + entry.uid + ": delta rx=" + entry.rxBytes - + " tx=" + entry.txBytes + " rxPackets=" + entry.rxPackets - + " txPackets=" + entry.txPackets); + synchronized (this) { + if (!mOnBatteryInternal) { + if (delta != null) { + mNetworkStatsPool.release(delta); } + return; + } - if (entry.rxBytes == 0 && entry.txBytes == 0) { - // Skip the lookup below since there is no work to do. - continue; - } + final long elapsedRealtimeMs = mClocks.elapsedRealtime(); + SparseLongArray rxPackets = new SparseLongArray(); + SparseLongArray txPackets = new SparseLongArray(); + long totalTxPackets = 0; + long totalRxPackets = 0; + if (delta != null) { + NetworkStats.Entry entry = new NetworkStats.Entry(); + final int size = delta.size(); + for (int i = 0; i < size; i++) { + entry = delta.getValues(i, entry); - final Uid u = getUidStatsLocked(mapUid(entry.uid)); - if (entry.rxBytes != 0) { - u.noteNetworkActivityLocked(NETWORK_WIFI_RX_DATA, entry.rxBytes, - entry.rxPackets); - if (entry.set == NetworkStats.SET_DEFAULT) { // Background transfers - u.noteNetworkActivityLocked(NETWORK_WIFI_BG_RX_DATA, entry.rxBytes, - entry.rxPackets); + if (DEBUG_ENERGY) { + Slog.d(TAG, "Wifi uid " + entry.uid + ": delta rx=" + entry.rxBytes + + " tx=" + entry.txBytes + " rxPackets=" + entry.rxPackets + + " txPackets=" + entry.txPackets); } - mNetworkByteActivityCounters[NETWORK_WIFI_RX_DATA].addCountLocked( - entry.rxBytes); - mNetworkPacketActivityCounters[NETWORK_WIFI_RX_DATA].addCountLocked( - entry.rxPackets); - - rxPackets.put(u.getUid(), entry.rxPackets); - // Sum the total number of packets so that the Rx Power can - // be evenly distributed amongst the apps. - totalRxPackets += entry.rxPackets; - } - - if (entry.txBytes != 0) { - u.noteNetworkActivityLocked(NETWORK_WIFI_TX_DATA, entry.txBytes, - entry.txPackets); - if (entry.set == NetworkStats.SET_DEFAULT) { // Background transfers - u.noteNetworkActivityLocked(NETWORK_WIFI_BG_TX_DATA, entry.txBytes, - entry.txPackets); + if (entry.rxBytes == 0 && entry.txBytes == 0) { + // Skip the lookup below since there is no work to do. + continue; } - mNetworkByteActivityCounters[NETWORK_WIFI_TX_DATA].addCountLocked( - entry.txBytes); - mNetworkPacketActivityCounters[NETWORK_WIFI_TX_DATA].addCountLocked( - entry.txPackets); - txPackets.put(u.getUid(), entry.txPackets); + final Uid u = getUidStatsLocked(mapUid(entry.uid)); + if (entry.rxBytes != 0) { + u.noteNetworkActivityLocked(NETWORK_WIFI_RX_DATA, entry.rxBytes, + entry.rxPackets); + if (entry.set == NetworkStats.SET_DEFAULT) { // Background transfers + u.noteNetworkActivityLocked(NETWORK_WIFI_BG_RX_DATA, entry.rxBytes, + entry.rxPackets); + } + mNetworkByteActivityCounters[NETWORK_WIFI_RX_DATA].addCountLocked( + entry.rxBytes); + mNetworkPacketActivityCounters[NETWORK_WIFI_RX_DATA].addCountLocked( + entry.rxPackets); - // Sum the total number of packets so that the Tx Power can - // be evenly distributed amongst the apps. - totalTxPackets += entry.txPackets; - } - } - } + rxPackets.put(u.getUid(), entry.rxPackets); - if (info != null) { - mHasWifiReporting = true; + // Sum the total number of packets so that the Rx Power can + // be evenly distributed amongst the apps. + totalRxPackets += entry.rxPackets; + } - // Measured in mAms - final long txTimeMs = info.getControllerTxTimeMillis(); - final long rxTimeMs = info.getControllerRxTimeMillis(); - final long idleTimeMs = info.getControllerIdleTimeMillis(); - final long totalTimeMs = txTimeMs + rxTimeMs + idleTimeMs; + if (entry.txBytes != 0) { + u.noteNetworkActivityLocked(NETWORK_WIFI_TX_DATA, entry.txBytes, + entry.txPackets); + if (entry.set == NetworkStats.SET_DEFAULT) { // Background transfers + u.noteNetworkActivityLocked(NETWORK_WIFI_BG_TX_DATA, entry.txBytes, + entry.txPackets); + } + mNetworkByteActivityCounters[NETWORK_WIFI_TX_DATA].addCountLocked( + entry.txBytes); + mNetworkPacketActivityCounters[NETWORK_WIFI_TX_DATA].addCountLocked( + entry.txPackets); - long leftOverRxTimeMs = rxTimeMs; - long leftOverTxTimeMs = txTimeMs; + txPackets.put(u.getUid(), entry.txPackets); - if (DEBUG_ENERGY) { - Slog.d(TAG, "------ BEGIN WiFi power blaming ------"); - Slog.d(TAG, " Tx Time: " + txTimeMs + " ms"); - Slog.d(TAG, " Rx Time: " + rxTimeMs + " ms"); - Slog.d(TAG, " Idle Time: " + idleTimeMs + " ms"); - Slog.d(TAG, " Total Time: " + totalTimeMs + " ms"); + // Sum the total number of packets so that the Tx Power can + // be evenly distributed amongst the apps. + totalTxPackets += entry.txPackets; + } + } + mNetworkStatsPool.release(delta); + delta = null; } - long totalWifiLockTimeMs = 0; - long totalScanTimeMs = 0; - - // On the first pass, collect some totals so that we can normalize power - // calculations if we need to. - final int uidStatsSize = mUidStats.size(); - for (int i = 0; i < uidStatsSize; i++) { - final Uid uid = mUidStats.valueAt(i); + if (info != null) { + mHasWifiReporting = true; - // Sum the total scan power for all apps. - totalScanTimeMs += uid.mWifiScanTimer.getTimeSinceMarkLocked( - elapsedRealtimeMs * 1000) / 1000; + // Measured in mAms + final long txTimeMs = info.getControllerTxTimeMillis(); + final long rxTimeMs = info.getControllerRxTimeMillis(); + final long idleTimeMs = info.getControllerIdleTimeMillis(); + final long totalTimeMs = txTimeMs + rxTimeMs + idleTimeMs; - // Sum the total time holding wifi lock for all apps. - totalWifiLockTimeMs += uid.mFullWifiLockTimer.getTimeSinceMarkLocked( - elapsedRealtimeMs * 1000) / 1000; - } - - if (DEBUG_ENERGY && totalScanTimeMs > rxTimeMs) { - Slog.d(TAG, " !Estimated scan time > Actual rx time (" + totalScanTimeMs + " ms > " - + rxTimeMs + " ms). Normalizing scan time."); - } - if (DEBUG_ENERGY && totalScanTimeMs > txTimeMs) { - Slog.d(TAG, " !Estimated scan time > Actual tx time (" + totalScanTimeMs + " ms > " - + txTimeMs + " ms). Normalizing scan time."); - } + long leftOverRxTimeMs = rxTimeMs; + long leftOverTxTimeMs = txTimeMs; - // Actually assign and distribute power usage to apps. - for (int i = 0; i < uidStatsSize; i++) { - final Uid uid = mUidStats.valueAt(i); - - long scanTimeSinceMarkMs = uid.mWifiScanTimer.getTimeSinceMarkLocked( - elapsedRealtimeMs * 1000) / 1000; - if (scanTimeSinceMarkMs > 0) { - // Set the new mark so that next time we get new data since this point. - uid.mWifiScanTimer.setMark(elapsedRealtimeMs); + if (DEBUG_ENERGY) { + Slog.d(TAG, "------ BEGIN WiFi power blaming ------"); + Slog.d(TAG, " Tx Time: " + txTimeMs + " ms"); + Slog.d(TAG, " Rx Time: " + rxTimeMs + " ms"); + Slog.d(TAG, " Idle Time: " + idleTimeMs + " ms"); + Slog.d(TAG, " Total Time: " + totalTimeMs + " ms"); + } + + long totalWifiLockTimeMs = 0; + long totalScanTimeMs = 0; + + // On the first pass, collect some totals so that we can normalize power + // calculations if we need to. + final int uidStatsSize = mUidStats.size(); + for (int i = 0; i < uidStatsSize; i++) { + final Uid uid = mUidStats.valueAt(i); + + // Sum the total scan power for all apps. + totalScanTimeMs += uid.mWifiScanTimer.getTimeSinceMarkLocked( + elapsedRealtimeMs * 1000) / 1000; + + // Sum the total time holding wifi lock for all apps. + totalWifiLockTimeMs += uid.mFullWifiLockTimer.getTimeSinceMarkLocked( + elapsedRealtimeMs * 1000) / 1000; + } + + if (DEBUG_ENERGY && totalScanTimeMs > rxTimeMs) { + Slog.d(TAG, + " !Estimated scan time > Actual rx time (" + totalScanTimeMs + " ms > " + + rxTimeMs + " ms). Normalizing scan time."); + } + if (DEBUG_ENERGY && totalScanTimeMs > txTimeMs) { + Slog.d(TAG, + " !Estimated scan time > Actual tx time (" + totalScanTimeMs + " ms > " + + txTimeMs + " ms). Normalizing scan time."); + } + + // Actually assign and distribute power usage to apps. + for (int i = 0; i < uidStatsSize; i++) { + final Uid uid = mUidStats.valueAt(i); + + long scanTimeSinceMarkMs = uid.mWifiScanTimer.getTimeSinceMarkLocked( + elapsedRealtimeMs * 1000) / 1000; + if (scanTimeSinceMarkMs > 0) { + // Set the new mark so that next time we get new data since this point. + uid.mWifiScanTimer.setMark(elapsedRealtimeMs); + + long scanRxTimeSinceMarkMs = scanTimeSinceMarkMs; + long scanTxTimeSinceMarkMs = scanTimeSinceMarkMs; + + // Our total scan time is more than the reported Tx/Rx time. + // This is possible because the cost of a scan is approximate. + // Let's normalize the result so that we evenly blame each app + // scanning. + // + // This means that we may have apps that transmitted/received packets not be + // blamed for this, but this is fine as scans are relatively more expensive. + if (totalScanTimeMs > rxTimeMs) { + scanRxTimeSinceMarkMs = (rxTimeMs * scanRxTimeSinceMarkMs) / + totalScanTimeMs; + } + if (totalScanTimeMs > txTimeMs) { + scanTxTimeSinceMarkMs = (txTimeMs * scanTxTimeSinceMarkMs) / + totalScanTimeMs; + } - long scanRxTimeSinceMarkMs = scanTimeSinceMarkMs; - long scanTxTimeSinceMarkMs = scanTimeSinceMarkMs; + if (DEBUG_ENERGY) { + Slog.d(TAG, " ScanTime for UID " + uid.getUid() + ": Rx:" + + scanRxTimeSinceMarkMs + " ms Tx:" + + scanTxTimeSinceMarkMs + " ms)"); + } - // Our total scan time is more than the reported Tx/Rx time. - // This is possible because the cost of a scan is approximate. - // Let's normalize the result so that we evenly blame each app - // scanning. - // - // This means that we may have apps that transmitted/received packets not be - // blamed for this, but this is fine as scans are relatively more expensive. - if (totalScanTimeMs > rxTimeMs) { - scanRxTimeSinceMarkMs = (rxTimeMs * scanRxTimeSinceMarkMs) / - totalScanTimeMs; - } - if (totalScanTimeMs > txTimeMs) { - scanTxTimeSinceMarkMs = (txTimeMs * scanTxTimeSinceMarkMs) / - totalScanTimeMs; + ControllerActivityCounterImpl activityCounter = + uid.getOrCreateWifiControllerActivityLocked(); + activityCounter.getRxTimeCounter().addCountLocked(scanRxTimeSinceMarkMs); + activityCounter.getTxTimeCounters()[0].addCountLocked( + scanTxTimeSinceMarkMs); + leftOverRxTimeMs -= scanRxTimeSinceMarkMs; + leftOverTxTimeMs -= scanTxTimeSinceMarkMs; } - if (DEBUG_ENERGY) { - Slog.d(TAG, " ScanTime for UID " + uid.getUid() + ": Rx:" - + scanRxTimeSinceMarkMs + " ms Tx:" - + scanTxTimeSinceMarkMs + " ms)"); + // Distribute evenly the power consumed while Idle to each app holding a WiFi + // lock. + final long wifiLockTimeSinceMarkMs = + uid.mFullWifiLockTimer.getTimeSinceMarkLocked( + elapsedRealtimeMs * 1000) / 1000; + if (wifiLockTimeSinceMarkMs > 0) { + // Set the new mark so that next time we get new data since this point. + uid.mFullWifiLockTimer.setMark(elapsedRealtimeMs); + + final long myIdleTimeMs = (wifiLockTimeSinceMarkMs * idleTimeMs) + / totalWifiLockTimeMs; + if (DEBUG_ENERGY) { + Slog.d(TAG, " IdleTime for UID " + uid.getUid() + ": " + + myIdleTimeMs + " ms"); + } + uid.getOrCreateWifiControllerActivityLocked().getIdleTimeCounter() + .addCountLocked(myIdleTimeMs); } - - ControllerActivityCounterImpl activityCounter = - uid.getOrCreateWifiControllerActivityLocked(); - activityCounter.getRxTimeCounter().addCountLocked(scanRxTimeSinceMarkMs); - activityCounter.getTxTimeCounters()[0].addCountLocked(scanTxTimeSinceMarkMs); - leftOverRxTimeMs -= scanRxTimeSinceMarkMs; - leftOverTxTimeMs -= scanTxTimeSinceMarkMs; } - // Distribute evenly the power consumed while Idle to each app holding a WiFi - // lock. - final long wifiLockTimeSinceMarkMs = uid.mFullWifiLockTimer.getTimeSinceMarkLocked( - elapsedRealtimeMs * 1000) / 1000; - if (wifiLockTimeSinceMarkMs > 0) { - // Set the new mark so that next time we get new data since this point. - uid.mFullWifiLockTimer.setMark(elapsedRealtimeMs); + if (DEBUG_ENERGY) { + Slog.d(TAG, " New RxPower: " + leftOverRxTimeMs + " ms"); + Slog.d(TAG, " New TxPower: " + leftOverTxTimeMs + " ms"); + } - final long myIdleTimeMs = (wifiLockTimeSinceMarkMs * idleTimeMs) - / totalWifiLockTimeMs; + // Distribute the remaining Tx power appropriately between all apps that transmitted + // packets. + for (int i = 0; i < txPackets.size(); i++) { + final Uid uid = getUidStatsLocked(txPackets.keyAt(i)); + final long myTxTimeMs = (txPackets.valueAt(i) * leftOverTxTimeMs) + / totalTxPackets; if (DEBUG_ENERGY) { - Slog.d(TAG, " IdleTime for UID " + uid.getUid() + ": " - + myIdleTimeMs + " ms"); + Slog.d(TAG, " TxTime for UID " + uid.getUid() + ": " + myTxTimeMs + " ms"); } - uid.getOrCreateWifiControllerActivityLocked().getIdleTimeCounter() - .addCountLocked(myIdleTimeMs); + uid.getOrCreateWifiControllerActivityLocked().getTxTimeCounters()[0] + .addCountLocked(myTxTimeMs); } - } - - if (DEBUG_ENERGY) { - Slog.d(TAG, " New RxPower: " + leftOverRxTimeMs + " ms"); - Slog.d(TAG, " New TxPower: " + leftOverTxTimeMs + " ms"); - } - // Distribute the remaining Tx power appropriately between all apps that transmitted - // packets. - for (int i = 0; i < txPackets.size(); i++) { - final Uid uid = getUidStatsLocked(txPackets.keyAt(i)); - final long myTxTimeMs = (txPackets.valueAt(i) * leftOverTxTimeMs) / totalTxPackets; - if (DEBUG_ENERGY) { - Slog.d(TAG, " TxTime for UID " + uid.getUid() + ": " + myTxTimeMs + " ms"); + // Distribute the remaining Rx power appropriately between all apps that received + // packets. + for (int i = 0; i < rxPackets.size(); i++) { + final Uid uid = getUidStatsLocked(rxPackets.keyAt(i)); + final long myRxTimeMs = (rxPackets.valueAt(i) * leftOverRxTimeMs) + / totalRxPackets; + if (DEBUG_ENERGY) { + Slog.d(TAG, " RxTime for UID " + uid.getUid() + ": " + myRxTimeMs + " ms"); + } + uid.getOrCreateWifiControllerActivityLocked().getRxTimeCounter() + .addCountLocked(myRxTimeMs); } - uid.getOrCreateWifiControllerActivityLocked().getTxTimeCounters()[0] - .addCountLocked(myTxTimeMs); - } - // Distribute the remaining Rx power appropriately between all apps that received - // packets. - for (int i = 0; i < rxPackets.size(); i++) { - final Uid uid = getUidStatsLocked(rxPackets.keyAt(i)); - final long myRxTimeMs = (rxPackets.valueAt(i) * leftOverRxTimeMs) / totalRxPackets; - if (DEBUG_ENERGY) { - Slog.d(TAG, " RxTime for UID " + uid.getUid() + ": " + myRxTimeMs + " ms"); - } - uid.getOrCreateWifiControllerActivityLocked().getRxTimeCounter() - .addCountLocked(myRxTimeMs); - } + // Any left over power use will be picked up by the WiFi category in BatteryStatsHelper. - // Any left over power use will be picked up by the WiFi category in BatteryStatsHelper. - // Update WiFi controller stats. - mWifiActivity.getRxTimeCounter().addCountLocked(info.getControllerRxTimeMillis()); - mWifiActivity.getTxTimeCounters()[0].addCountLocked(info.getControllerTxTimeMillis()); - mWifiActivity.getIdleTimeCounter().addCountLocked(info.getControllerIdleTimeMillis()); + // Update WiFi controller stats. + mWifiActivity.getRxTimeCounter().addCountLocked(info.getControllerRxTimeMillis()); + mWifiActivity.getTxTimeCounters()[0].addCountLocked( + info.getControllerTxTimeMillis()); + mWifiActivity.getIdleTimeCounter().addCountLocked( + info.getControllerIdleTimeMillis()); - // POWER_WIFI_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V. - final double opVolt = mPowerProfile.getAveragePower( - PowerProfile.POWER_WIFI_CONTROLLER_OPERATING_VOLTAGE) / 1000.0; - if (opVolt != 0) { - // We store the power drain as mAms. - mWifiActivity.getPowerCounter().addCountLocked( - (long)(info.getControllerEnergyUsed() / opVolt)); + // POWER_WIFI_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V. + final double opVolt = mPowerProfile.getAveragePower( + PowerProfile.POWER_WIFI_CONTROLLER_OPERATING_VOLTAGE) / 1000.0; + if (opVolt != 0) { + // We store the power drain as mAms. + mWifiActivity.getPowerCounter().addCountLocked( + (long) (info.getControllerEnergyUsed() / opVolt)); + } } } } @@ -9611,133 +9717,148 @@ public class BatteryStatsImpl extends BatteryStats { /** * Distribute Cell radio energy info and network traffic to apps. */ - public void updateMobileRadioStateLocked(final long elapsedRealtimeMs, - final ModemActivityInfo activityInfo) { + public void updateMobileRadioState(@Nullable final ModemActivityInfo activityInfo) { if (DEBUG_ENERGY) { Slog.d(TAG, "Updating mobile radio stats with " + activityInfo); } + // Grab a separate lock to acquire the network stats, which may do I/O. NetworkStats delta = null; - try { - if (!ArrayUtils.isEmpty(mMobileIfaces)) { - delta = getNetworkStatsDeltaLocked(mMobileIfaces, mMobileNetworkStats); + synchronized (mModemNetworkLock) { + final NetworkStats latestStats = readNetworkStatsLocked(mModemIfaces); + if (latestStats != null) { + delta = NetworkStats.subtract(latestStats, mLastModemNetworkStats, null, null, + mNetworkStatsPool.acquire()); + mNetworkStatsPool.release(mLastModemNetworkStats); + mLastModemNetworkStats = latestStats; } - } catch (IOException e) { - Slog.wtf(TAG, "Failed to get mobile network stats", e); - return; - } - - if (!mOnBatteryInternal) { - return; } - long radioTime = mMobileRadioActivePerAppTimer.getTimeSinceMarkLocked( - elapsedRealtimeMs * 1000); - mMobileRadioActivePerAppTimer.setMark(elapsedRealtimeMs); - - long totalRxPackets = 0; - long totalTxPackets = 0; - if (delta != null) { - final int size = delta.size(); - for (int i = 0; i < size; i++) { - final NetworkStats.Entry entry = delta.getValues(i, mTmpNetworkStatsEntry); - if (entry.rxPackets == 0 && entry.txPackets == 0) { - continue; - } - - if (DEBUG_ENERGY) { - Slog.d(TAG, "Mobile uid " + entry.uid + ": delta rx=" + entry.rxBytes - + " tx=" + entry.txBytes + " rxPackets=" + entry.rxPackets - + " txPackets=" + entry.txPackets); - } - - totalRxPackets += entry.rxPackets; - totalTxPackets += entry.txPackets; - - final Uid u = getUidStatsLocked(mapUid(entry.uid)); - u.noteNetworkActivityLocked(NETWORK_MOBILE_RX_DATA, entry.rxBytes, entry.rxPackets); - u.noteNetworkActivityLocked(NETWORK_MOBILE_TX_DATA, entry.txBytes, entry.txPackets); - if (entry.set == NetworkStats.SET_DEFAULT) { // Background transfers - u.noteNetworkActivityLocked(NETWORK_MOBILE_BG_RX_DATA, - entry.rxBytes, entry.rxPackets); - u.noteNetworkActivityLocked(NETWORK_MOBILE_BG_TX_DATA, - entry.txBytes, entry.txPackets); + synchronized (this) { + if (!mOnBatteryInternal) { + if (delta != null) { + mNetworkStatsPool.release(delta); } - - mNetworkByteActivityCounters[NETWORK_MOBILE_RX_DATA].addCountLocked( - entry.rxBytes); - mNetworkByteActivityCounters[NETWORK_MOBILE_TX_DATA].addCountLocked( - entry.txBytes); - mNetworkPacketActivityCounters[NETWORK_MOBILE_RX_DATA].addCountLocked( - entry.rxPackets); - mNetworkPacketActivityCounters[NETWORK_MOBILE_TX_DATA].addCountLocked( - entry.txPackets); + return; } - // Now distribute proportional blame to the apps that did networking. - long totalPackets = totalRxPackets + totalTxPackets; - if (totalPackets > 0) { + final long elapsedRealtimeMs = SystemClock.elapsedRealtime(); + long radioTime = mMobileRadioActivePerAppTimer.getTimeSinceMarkLocked( + elapsedRealtimeMs * 1000); + mMobileRadioActivePerAppTimer.setMark(elapsedRealtimeMs); + + long totalRxPackets = 0; + long totalTxPackets = 0; + if (delta != null) { + NetworkStats.Entry entry = new NetworkStats.Entry(); + final int size = delta.size(); for (int i = 0; i < size; i++) { - final NetworkStats.Entry entry = delta.getValues(i, mTmpNetworkStatsEntry); + entry = delta.getValues(i, entry); if (entry.rxPackets == 0 && entry.txPackets == 0) { continue; } - final Uid u = getUidStatsLocked(mapUid(entry.uid)); + if (DEBUG_ENERGY) { + Slog.d(TAG, "Mobile uid " + entry.uid + ": delta rx=" + entry.rxBytes + + " tx=" + entry.txBytes + " rxPackets=" + entry.rxPackets + + " txPackets=" + entry.txPackets); + } - // Distribute total radio active time in to this app. - final long appPackets = entry.rxPackets + entry.txPackets; - final long appRadioTime = (radioTime * appPackets) / totalPackets; - u.noteMobileRadioActiveTimeLocked(appRadioTime); + totalRxPackets += entry.rxPackets; + totalTxPackets += entry.txPackets; + + final Uid u = getUidStatsLocked(mapUid(entry.uid)); + u.noteNetworkActivityLocked(NETWORK_MOBILE_RX_DATA, entry.rxBytes, + entry.rxPackets); + u.noteNetworkActivityLocked(NETWORK_MOBILE_TX_DATA, entry.txBytes, + entry.txPackets); + if (entry.set == NetworkStats.SET_DEFAULT) { // Background transfers + u.noteNetworkActivityLocked(NETWORK_MOBILE_BG_RX_DATA, + entry.rxBytes, entry.rxPackets); + u.noteNetworkActivityLocked(NETWORK_MOBILE_BG_TX_DATA, + entry.txBytes, entry.txPackets); + } - // Remove this app from the totals, so that we don't lose any time - // due to rounding. - radioTime -= appRadioTime; - totalPackets -= appPackets; + mNetworkByteActivityCounters[NETWORK_MOBILE_RX_DATA].addCountLocked( + entry.rxBytes); + mNetworkByteActivityCounters[NETWORK_MOBILE_TX_DATA].addCountLocked( + entry.txBytes); + mNetworkPacketActivityCounters[NETWORK_MOBILE_RX_DATA].addCountLocked( + entry.rxPackets); + mNetworkPacketActivityCounters[NETWORK_MOBILE_TX_DATA].addCountLocked( + entry.txPackets); + } - if (activityInfo != null) { - ControllerActivityCounterImpl activityCounter = - u.getOrCreateModemControllerActivityLocked(); - if (totalRxPackets > 0 && entry.rxPackets > 0) { - final long rxMs = (entry.rxPackets * activityInfo.getRxTimeMillis()) - / totalRxPackets; - activityCounter.getRxTimeCounter().addCountLocked(rxMs); + // Now distribute proportional blame to the apps that did networking. + long totalPackets = totalRxPackets + totalTxPackets; + if (totalPackets > 0) { + for (int i = 0; i < size; i++) { + entry = delta.getValues(i, entry); + if (entry.rxPackets == 0 && entry.txPackets == 0) { + continue; } - if (totalTxPackets > 0 && entry.txPackets > 0) { - for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { - long txMs = entry.txPackets * activityInfo.getTxTimeMillis()[lvl]; - txMs /= totalTxPackets; - activityCounter.getTxTimeCounters()[lvl].addCountLocked(txMs); + final Uid u = getUidStatsLocked(mapUid(entry.uid)); + + // Distribute total radio active time in to this app. + final long appPackets = entry.rxPackets + entry.txPackets; + final long appRadioTime = (radioTime * appPackets) / totalPackets; + u.noteMobileRadioActiveTimeLocked(appRadioTime); + + // Remove this app from the totals, so that we don't lose any time + // due to rounding. + radioTime -= appRadioTime; + totalPackets -= appPackets; + + if (activityInfo != null) { + ControllerActivityCounterImpl activityCounter = + u.getOrCreateModemControllerActivityLocked(); + if (totalRxPackets > 0 && entry.rxPackets > 0) { + final long rxMs = (entry.rxPackets * activityInfo.getRxTimeMillis()) + / totalRxPackets; + activityCounter.getRxTimeCounter().addCountLocked(rxMs); + } + + if (totalTxPackets > 0 && entry.txPackets > 0) { + for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { + long txMs = + entry.txPackets * activityInfo.getTxTimeMillis()[lvl]; + txMs /= totalTxPackets; + activityCounter.getTxTimeCounters()[lvl].addCountLocked(txMs); + } } } } } - } - if (radioTime > 0) { - // Whoops, there is some radio time we can't blame on an app! - mMobileRadioActiveUnknownTime.addCountLocked(radioTime); - mMobileRadioActiveUnknownCount.addCountLocked(1); - } - } + if (radioTime > 0) { + // Whoops, there is some radio time we can't blame on an app! + mMobileRadioActiveUnknownTime.addCountLocked(radioTime); + mMobileRadioActiveUnknownCount.addCountLocked(1); + } - if (activityInfo != null) { - mHasModemReporting = true; - mModemActivity.getIdleTimeCounter().addCountLocked(activityInfo.getIdleTimeMillis()); - mModemActivity.getRxTimeCounter().addCountLocked(activityInfo.getRxTimeMillis()); - for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { - mModemActivity.getTxTimeCounters()[lvl] - .addCountLocked(activityInfo.getTxTimeMillis()[lvl]); + mNetworkStatsPool.release(delta); + delta = null; } - // POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V. - final double opVolt = mPowerProfile.getAveragePower( - PowerProfile.POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE) / 1000.0; - if (opVolt != 0) { - // We store the power drain as mAms. - mModemActivity.getPowerCounter().addCountLocked( - (long) (activityInfo.getEnergyUsed() / opVolt)); + if (activityInfo != null) { + mHasModemReporting = true; + mModemActivity.getIdleTimeCounter().addCountLocked( + activityInfo.getIdleTimeMillis()); + mModemActivity.getRxTimeCounter().addCountLocked(activityInfo.getRxTimeMillis()); + for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { + mModemActivity.getTxTimeCounters()[lvl] + .addCountLocked(activityInfo.getTxTimeMillis()[lvl]); + } + + // POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V. + final double opVolt = mPowerProfile.getAveragePower( + PowerProfile.POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE) / 1000.0; + if (opVolt != 0) { + // We store the power drain as mAms. + mModemActivity.getPowerCounter().addCountLocked( + (long) (activityInfo.getEnergyUsed() / opVolt)); + } } } } @@ -11380,8 +11501,14 @@ public class BatteryStatsImpl extends BatteryStats { u.createBluetoothScanTimerLocked().readSummaryFromParcelLocked(in); } if (in.readInt() != 0) { + u.createBluetoothUnoptimizedScanTimerLocked().readSummaryFromParcelLocked(in); + } + if (in.readInt() != 0) { u.createBluetoothScanResultCounterLocked().readSummaryFromParcelLocked(in); } + if (in.readInt() != 0) { + u.createBluetoothScanResultBgCounterLocked().readSummaryFromParcelLocked(in); + } u.mProcessState = ActivityManager.PROCESS_STATE_NONEXISTENT; for (int i = 0; i < Uid.NUM_PROCESS_STATE; i++) { if (in.readInt() != 0) { @@ -11789,12 +11916,24 @@ public class BatteryStatsImpl extends BatteryStats { } else { out.writeInt(0); } + if (u.mBluetoothUnoptimizedScanTimer != null) { + out.writeInt(1); + u.mBluetoothUnoptimizedScanTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS); + } else { + out.writeInt(0); + } if (u.mBluetoothScanResultCounter != null) { out.writeInt(1); u.mBluetoothScanResultCounter.writeSummaryFromParcelLocked(out); } else { out.writeInt(0); } + if (u.mBluetoothScanResultBgCounter != null) { + out.writeInt(1); + u.mBluetoothScanResultBgCounter.writeSummaryFromParcelLocked(out); + } else { + out.writeInt(0); + } for (int i = 0; i < Uid.NUM_PROCESS_STATE; i++) { if (u.mProcessStateTimer[i] != null) { out.writeInt(1); diff --git a/core/java/com/android/internal/widget/LockPatternView.java b/core/java/com/android/internal/widget/LockPatternView.java index cc1c65ec24bb..32a7a2dadddb 100644 --- a/core/java/com/android/internal/widget/LockPatternView.java +++ b/core/java/com/android/internal/widget/LockPatternView.java @@ -39,6 +39,7 @@ import android.provider.Settings; import android.util.AttributeSet; import android.util.IntArray; import android.util.Log; +import android.util.SparseArray; import android.view.DisplayListCanvas; import android.view.HapticFeedbackConstants; import android.view.MotionEvent; @@ -54,7 +55,6 @@ import android.view.animation.Interpolator; import com.android.internal.R; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; /** @@ -1340,8 +1340,7 @@ public class LockPatternView extends View { private final class PatternExploreByTouchHelper extends ExploreByTouchHelper { private Rect mTempRect = new Rect(); - private HashMap<Integer, VirtualViewContainer> mItems = new HashMap<Integer, - VirtualViewContainer>(); + private final SparseArray<VirtualViewContainer> mItems = new SparseArray<>(); class VirtualViewContainer { public VirtualViewContainer(CharSequence description) { @@ -1352,6 +1351,9 @@ public class LockPatternView extends View { public PatternExploreByTouchHelper(View forView) { super(forView); + for (int i = VIRTUAL_BASE_VIEW_ID; i < VIRTUAL_BASE_VIEW_ID + 9; i++) { + mItems.put(i, new VirtualViewContainer(getTextForVirtualView(i))); + } } @Override @@ -1369,10 +1371,6 @@ public class LockPatternView extends View { return; } for (int i = VIRTUAL_BASE_VIEW_ID; i < VIRTUAL_BASE_VIEW_ID + 9; i++) { - if (!mItems.containsKey(i)) { - VirtualViewContainer item = new VirtualViewContainer(getTextForVirtualView(i)); - mItems.put(i, item); - } // Add all views. As views are added to the pattern, we remove them // from notification by making them non-clickable below. virtualViewIds.add(i); @@ -1383,9 +1381,9 @@ public class LockPatternView extends View { protected void onPopulateEventForVirtualView(int virtualViewId, AccessibilityEvent event) { if (DEBUG_A11Y) Log.v(TAG, "onPopulateEventForVirtualView(" + virtualViewId + ")"); // Announce this view - if (mItems.containsKey(virtualViewId)) { - CharSequence contentDescription = mItems.get(virtualViewId).description; - event.getText().add(contentDescription); + VirtualViewContainer container = mItems.get(virtualViewId); + if (container != null) { + event.getText().add(container.description); } } diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 15c9f196ef29..9f55717c99fb 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -703,7 +703,7 @@ <string name="relationTypeFriend" msgid="7313106762483391262">"صديق"</string> <string name="relationTypeManager" msgid="6365677861610137895">"مدير"</string> <string name="relationTypeMother" msgid="4578571352962758304">"أم"</string> - <string name="relationTypeParent" msgid="4755635567562925226">"الأبوان"</string> + <string name="relationTypeParent" msgid="4755635567562925226">"الوالدان"</string> <string name="relationTypePartner" msgid="7266490285120262781">"شريك"</string> <string name="relationTypeReferredBy" msgid="101573059844135524">"جهة الإحالة"</string> <string name="relationTypeRelative" msgid="1799819930085610271">"قريب"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index a3abc52a347c..b7b661d9ba60 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -28,15 +28,15 @@ <string name="petabyteShort" msgid="5637816680144990219">"PB"</string> <string name="fileSizeSuffix" msgid="8897567456150907538">"<xliff:g id="NUMBER">%1$s</xliff:g> <xliff:g id="UNIT">%2$s</xliff:g>"</string> <string name="durationDays" msgid="6652371460511178259">"<xliff:g id="DAYS">%1$d</xliff:g> dana"</string> - <string name="durationDayHours" msgid="2713107458736744435">"<xliff:g id="DAYS">%1$d</xliff:g> dan <xliff:g id="HOURS">%2$d</xliff:g> sati"</string> - <string name="durationDayHour" msgid="7293789639090958917">"<xliff:g id="DAYS">%1$d</xliff:g> dan <xliff:g id="HOURS">%2$d</xliff:g> sat"</string> + <string name="durationDayHours" msgid="2713107458736744435">"<xliff:g id="DAYS">%1$d</xliff:g> d i <xliff:g id="HOURS">%2$d</xliff:g> h"</string> + <string name="durationDayHour" msgid="7293789639090958917">"<xliff:g id="DAYS">%1$d</xliff:g> d i <xliff:g id="HOURS">%2$d</xliff:g> h"</string> <string name="durationHours" msgid="4266858287167358988">"<xliff:g id="HOURS">%1$d</xliff:g> sati"</string> - <string name="durationHourMinutes" msgid="9029176248692041549">"<xliff:g id="HOURS">%1$d</xliff:g> sat <xliff:g id="MINUTES">%2$d</xliff:g> min"</string> - <string name="durationHourMinute" msgid="2741677355177402539">"<xliff:g id="HOURS">%1$d</xliff:g> sat <xliff:g id="MINUTES">%2$d</xliff:g> min"</string> + <string name="durationHourMinutes" msgid="9029176248692041549">"<xliff:g id="HOURS">%1$d</xliff:g> h i <xliff:g id="MINUTES">%2$d</xliff:g> min"</string> + <string name="durationHourMinute" msgid="2741677355177402539">"<xliff:g id="HOURS">%1$d</xliff:g> h i <xliff:g id="MINUTES">%2$d</xliff:g> min"</string> <string name="durationMinutes" msgid="3134226679883579347">"<xliff:g id="MINUTES">%1$d</xliff:g> min"</string> <string name="durationMinute" msgid="7155301744174623818">"<xliff:g id="MINUTES">%1$d</xliff:g> min"</string> - <string name="durationMinuteSeconds" msgid="1424656185379003751">"<xliff:g id="MINUTES">%1$d</xliff:g> min <xliff:g id="SECONDS">%2$d</xliff:g> sek"</string> - <string name="durationMinuteSecond" msgid="3989228718067466680">"<xliff:g id="MINUTES">%1$d</xliff:g> min <xliff:g id="SECONDS">%2$d</xliff:g> sek"</string> + <string name="durationMinuteSeconds" msgid="1424656185379003751">"<xliff:g id="MINUTES">%1$d</xliff:g> min i <xliff:g id="SECONDS">%2$d</xliff:g> s"</string> + <string name="durationMinuteSecond" msgid="3989228718067466680">"<xliff:g id="MINUTES">%1$d</xliff:g> min i <xliff:g id="SECONDS">%2$d</xliff:g> s"</string> <string name="durationSeconds" msgid="8050088505238241405">"<xliff:g id="SECONDS">%1$d</xliff:g> sek"</string> <string name="durationSecond" msgid="985669622276420331">"<xliff:g id="SECONDS">%1$d</xliff:g> sek"</string> <string name="untitled" msgid="4638956954852782576">"<Bez naslova>"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index aa3e17a213f8..aaa495612672 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1116,7 +1116,7 @@ <string name="wifi_no_internet" msgid="8451173622563841546">"La Wi-Fi no té accés a Internet"</string> <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toca per veure les opcions"</string> <string name="network_switch_metered" msgid="4671730921726992671">"Actualment en ús: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string> - <string name="network_switch_metered_detail" msgid="5325661434777870353">"El dispositiu utilitza <xliff:g id="NEW_NETWORK">%1$s</xliff:g> en cas que <xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> no tingui accés a Internet. És possible que s\'apliquin càrrecs."</string> + <string name="network_switch_metered_detail" msgid="5325661434777870353">"El dispositiu utilitza <xliff:g id="NEW_NETWORK">%1$s</xliff:g> en cas que <xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> no tingui accés a Internet. És possible que s\'hi apliquin càrrecs."</string> <string name="network_switch_metered_toast" msgid="5779283181685974304">"Abans es feia servir la xarxa <xliff:g id="PREVIOUS_NETWORK">%1$s</xliff:g>; ara s\'utilitza <xliff:g id="NEW_NETWORK">%2$s</xliff:g>"</string> <string-array name="network_switch_type_name"> <item msgid="3979506840912951943">"dades mòbils"</item> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index cad9c82ecd94..20c2971f1a2d 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -291,7 +291,7 @@ <string name="permgroupdesc_camera" msgid="3250611594678347720">"사진 및 동영상 촬영"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"전화"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"전화 걸기 및 관리"</string> - <string name="permgrouplab_sensors" msgid="416037179223226722">"신체 센서"</string> + <string name="permgrouplab_sensors" msgid="416037179223226722">"인체 감지 센서"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"생체 신호에 관한 센서 데이터에 액세스"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"창 콘텐츠 가져오기"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"상호작용 중인 창의 콘텐츠를 검사합니다."</string> @@ -381,7 +381,7 @@ <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"앱에서 수신 및 발신 통화 데이터를 포함하여 태블릿의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 지우거나 수정할 수 있습니다."</string> <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"앱에서 수신 및 발신 통화 데이터를 포함하여 TV의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 삭제하거나 수정할 수도 있습니다."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"앱에서 수신 및 발신 통화 데이터를 포함하여 휴대전화의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 지우거나 수정할 수 있습니다."</string> - <string name="permlab_bodySensors" msgid="4683341291818520277">"신체 센서(예: 심박수 모니터)에 액세스"</string> + <string name="permlab_bodySensors" msgid="4683341291818520277">"인체 감지 센서(예: 심박수 모니터)에 액세스"</string> <string name="permdesc_bodySensors" product="default" msgid="4380015021754180431">"앱이 심박수와 같은 신체 상태를 확인하는 센서의 데이터에 접근하도록 허용합니다."</string> <string name="permlab_readCalendar" msgid="6716116972752441641">"캘린더 일정 및 세부정보 읽기"</string> <string name="permdesc_readCalendar" product="tablet" msgid="4993979255403945892">"이 앱은 태블릿에 저장된 모든 캘린더 일정을 읽고 캘린더 데이터를 공유하거나 저장할 수 있습니다."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 18beac34b003..541648cddaaf 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -213,7 +213,7 @@ <string name="reboot_to_update_prepare" msgid="6305853831955310890">"Подготовка обновлений…"</string> <string name="reboot_to_update_package" msgid="3871302324500927291">"Обработка обновлений…"</string> <string name="reboot_to_update_reboot" msgid="6428441000951565185">"Перезагрузка…"</string> - <string name="reboot_to_reset_title" msgid="4142355915340627490">"Сбросить все данные"</string> + <string name="reboot_to_reset_title" msgid="4142355915340627490">"Сброс к заводским настройкам"</string> <string name="reboot_to_reset_message" msgid="2432077491101416345">"Перезагрузка…"</string> <string name="shutdown_progress" msgid="2281079257329981203">"Выключение..."</string> <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Планшетный ПК будет отключен."</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 7cbed8127661..954122037238 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -152,8 +152,8 @@ <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> หลังผ่านไป <xliff:g id="TIME_DELAY">{2}</xliff:g> วินาที"</string> <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ไม่ได้โอนสาย"</string> <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ไม่ได้โอนสาย"</string> - <string name="fcComplete" msgid="3118848230966886575">"รหัสคุณลักษณะเสร็จสมบูรณ์"</string> - <string name="fcError" msgid="3327560126588500777">"พบปัญหาในการเชื่อมต่อหรือรหัสคุณลักษณะไม่ถูกต้อง"</string> + <string name="fcComplete" msgid="3118848230966886575">"รหัสฟีเจอร์เสร็จสมบูรณ์"</string> + <string name="fcError" msgid="3327560126588500777">"พบปัญหาในการเชื่อมต่อหรือรหัสฟีเจอร์ไม่ถูกต้อง"</string> <string name="httpErrorOk" msgid="1191919378083472204">"ตกลง"</string> <string name="httpError" msgid="7956392511146698522">"เกิดข้อผิดพลาดของเครือข่าย"</string> <string name="httpErrorLookup" msgid="4711687456111963163">"ไม่พบ URL"</string> @@ -414,7 +414,7 @@ <string name="permlab_accessImsCallService" msgid="3574943847181793918">"เข้าถึงบริการโทร IMS"</string> <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"อนุญาตให้แอปใช้บริการ IMS เพื่อโทรออกโดยคุณไม่ต้องดำเนินการใดๆ เลย"</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"อ่านสถานะและข้อมูลระบุตัวตนของโทรศัพท์"</string> - <string name="permdesc_readPhoneState" msgid="1639212771826125528">"อนุญาตให้แอปพลิเคชันเข้าถึงคุณลักษณะโทรศัพท์ของอุปกรณ์ การอนุญาตนี้ทำให้แอปพลิเคชันสามารถตรวจสอบหมายเลขโทรศัพท์และรหัสอุปกรณ์ ตรวจสอบว่ามีการโทรที่ทำงานอยู่หรือไม่ และตรวจสอบหมายเลขระยะไกลที่เชื่อมต่อด้วยการโทร"</string> + <string name="permdesc_readPhoneState" msgid="1639212771826125528">"อนุญาตให้แอปพลิเคชันเข้าถึงฟีเจอร์โทรศัพท์ของอุปกรณ์ การอนุญาตนี้ทำให้แอปพลิเคชันสามารถตรวจสอบหมายเลขโทรศัพท์และรหัสอุปกรณ์ ตรวจสอบว่ามีการโทรที่ทำงานอยู่หรือไม่ และตรวจสอบหมายเลขระยะไกลที่เชื่อมต่อด้วยการโทร"</string> <string name="permlab_manageOwnCalls" msgid="1503034913274622244">"กำหนดเส้นทางการโทรผ่านระบบ"</string> <string name="permdesc_manageOwnCalls" msgid="6552974537554717418">"อนุญาตให้แอปกำหนดเส้นทางการโทรของแอปผ่านระบบเพื่อปรับปรุงประสบการณ์ในการโทร"</string> <string name="permlab_readPhoneNumbers" msgid="6108163940932852440">"อ่านหมายเลขโทรศัพท์"</string> @@ -586,8 +586,8 @@ <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"ข้อมูลของแอปพลิเคชันที่จัดเก็บต้องมีการเข้ารหัส"</string> <string name="policylab_disableCamera" msgid="6395301023152297826">"ปิดใช้งานกล้องถ่ายรูป"</string> <string name="policydesc_disableCamera" msgid="2306349042834754597">"ป้องกันการใช้กล้องถ่ายรูปของอุปกรณ์ทั้งหมด"</string> - <string name="policylab_disableKeyguardFeatures" msgid="8552277871075367771">"ปิดคุณลักษณะล็อกหน้าจอบางอย่าง"</string> - <string name="policydesc_disableKeyguardFeatures" msgid="2044755691354158439">"ป้องกันการใช้คุณลักษณะบางอย่างของการล็อกหน้าจอ"</string> + <string name="policylab_disableKeyguardFeatures" msgid="8552277871075367771">"ปิดฟีเจอร์ล็อกหน้าจอบางอย่าง"</string> + <string name="policydesc_disableKeyguardFeatures" msgid="2044755691354158439">"ป้องกันการใช้ฟีเจอร์บางอย่างของการล็อกหน้าจอ"</string> <string-array name="phoneTypes"> <item msgid="8901098336658710359">"บ้าน"</item> <item msgid="869923650527136615">"มือถือ"</item> @@ -722,7 +722,7 @@ <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ถูกต้อง!"</string> <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ลองอีกครั้ง"</string> <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ลองอีกครั้ง"</string> - <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ปลดล็อกคุณลักษณะและข้อมูลทั้งหมด"</string> + <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ปลดล็อกฟีเจอร์และข้อมูลทั้งหมด"</string> <string name="faceunlock_multiple_failures" msgid="754137583022792429">"มีความพยายามที่จะใช้ Face Unlock เกินขีดจำกัด"</string> <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ไม่มีซิมการ์ด"</string> <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ไม่มีซิมการ์ดในแท็บเล็ต"</string> @@ -842,7 +842,7 @@ <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="7007393823197766548">"อนุญาตให้แอปแก้ไขประวัติของเบราว์เซอร์หรือบุ๊กมาร์กที่เก็บไว้ในทีวี ซึ่งอาจอนุญาตให้แอปลบหรือแก้ไขข้อมูลเบราว์เซอร์ หมายเหตุ: สิทธิ์นี้ไม่สามารถใช้ได้กับเบราว์เซอร์ของบุคคลที่สามหรือแอปพลิเคชันอื่นที่สามารถท่องเว็บได้"</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงประวัติหรือบุ๊กมาร์กของเบราว์เซอร์ที่จัดเก็บไว้ในโทรศัพท์ ซึ่งทำให้แอปพลิเคชันสามารถลบหรือเปลี่ยนข้อมูลเบราว์เซอร์ได้ หมายเหตุ: การอนุญาตนี้อาจไม่สามารถใช้งานได้กับเบราว์เซอร์ของบุคคลที่สามหรือแอปพลิเคชันอื่นๆ ที่มีความสามารถในการเรียกดูบนเว็บ"</string> <string name="permlab_setAlarm" msgid="1379294556362091814">"ตั้งปลุก"</string> - <string name="permdesc_setAlarm" msgid="316392039157473848">"อนุญาตให้แอปพลิเคชันตั้งเวลาปลุกในแอปพลิเคชันนาฬิกาปลุกที่ติดตั้ง แอปพลิเคชันนาฬิกาปลุกบางรายการอาจไม่ใช้คุณลักษณะนี้"</string> + <string name="permdesc_setAlarm" msgid="316392039157473848">"อนุญาตให้แอปพลิเคชันตั้งเวลาปลุกในแอปพลิเคชันนาฬิกาปลุกที่ติดตั้ง แอปพลิเคชันนาฬิกาปลุกบางรายการอาจไม่ใช้ฟีเจอร์นี้"</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"เพิ่มข้อวามเสียง"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"อนุญาตให้แอปพลิเคชันเพิ่มข้อความลงในกล่องข้อความเสียงของคุณ"</string> <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"แก้ไขการอนุญาตเกี่ยวกับการระบุตำแหน่งทางภูมิศาสตร์ของเบราว์เซอร์"</string> @@ -1208,7 +1208,7 @@ <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรลวศษสหฬอฮ"</string> <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> แสดงทับแอปอื่นๆ"</string> <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> กำลังแสดงทับแอปอื่นๆ"</string> - <string name="alert_windows_notification_message" msgid="8917232109522912560">"หากคุณไม่ต้องการให้ <xliff:g id="NAME">%s</xliff:g> ใช้คุณลักษณะนี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดคุณลักษณะ"</string> + <string name="alert_windows_notification_message" msgid="8917232109522912560">"หากคุณไม่ต้องการให้ <xliff:g id="NAME">%s</xliff:g> ใช้ฟีเจอร์นี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดฟีเจอร์"</string> <string name="alert_windows_notification_turn_off_action" msgid="3367294525884949878">"ปิด"</string> <string name="ext_media_checking_notification_title" msgid="5734005953288045806">"กำลังเตรียม <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_checking_notification_message" msgid="4747432538578886744">"กำลังตรวจหาข้อผิดพลาด"</string> @@ -1482,13 +1482,13 @@ <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ลบ"</string> <string name="safe_media_volume_warning" product="default" msgid="2276318909314492312">"นี่เป็นการเพิ่มระดับเสียงเกินระดับที่แนะนำ\n\nการฟังเสียงดังเป็นเวลานานอาจทำให้การได้ยินของคุณบกพร่องได้"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="8404780875025725199">"ใช้ทางลัดการเข้าถึงพิเศษไหม"</string> - <string name="accessibility_shortcut_toogle_warning" msgid="7256507885737444807">"เมื่อทางลัดเปิดอยู่ การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มเป็นเวลา 3 วินาทีจะเริ่มคุณลักษณะการเข้าถึงพิเศษ\n\n คุณลักษณะการเข้าถึงพิเศษปัจจุบัน:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n คุณสามารถเปลี่ยนคุณลักษณะในการตั้งค่า > การเข้าถึงพิเศษ"</string> + <string name="accessibility_shortcut_toogle_warning" msgid="7256507885737444807">"เมื่อทางลัดเปิดอยู่ การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มเป็นเวลา 3 วินาทีจะเริ่มฟีเจอร์การเข้าถึงพิเศษ\n\n ฟีเจอร์การเข้าถึงพิเศษปัจจุบัน:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n คุณสามารถเปลี่ยนฟีเจอร์ในการตั้งค่า > การเข้าถึงพิเศษ"</string> <string name="disable_accessibility_shortcut" msgid="627625354248453445">"ปิดทางลัด"</string> <string name="leave_accessibility_shortcut_on" msgid="7653111894438512680">"ใช้ทางลัด"</string> <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ทางลัดการเข้าถึงเปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ทางลัดการเข้าถึงปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> - <string name="accessibility_button_prompt_text" msgid="4234556536456854251">"เลือกคุณลักษณะที่จะใช้เมื่อคุณแตะปุ่ม \"การเข้าถึงพิเศษ\":"</string> - <string name="accessibility_button_instructional_text" msgid="6942300463612999993">"หากต้องการเปลี่ยนคุณลักษณะ ให้แตะปุ่ม \"การเข้าถึงพิเศษ\" ค้างไว้"</string> + <string name="accessibility_button_prompt_text" msgid="4234556536456854251">"เลือกฟีเจอร์ที่จะใช้เมื่อคุณแตะปุ่ม \"การเข้าถึงพิเศษ\":"</string> + <string name="accessibility_button_instructional_text" msgid="6942300463612999993">"หากต้องการเปลี่ยนฟีเจอร์ ให้แตะปุ่ม \"การเข้าถึงพิเศษ\" ค้างไว้"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"การขยาย"</string> <string name="user_switched" msgid="3768006783166984410">"ผู้ใช้ปัจจุบัน <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="2871009331809089783">"กำลังเปลี่ยนเป็น <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -1710,7 +1710,7 @@ <string name="region_picker_section_all" msgid="8966316787153001779">"ภูมิภาคทั้งหมด"</string> <string name="locale_search_menu" msgid="2560710726687249178">"ค้นหา"</string> <string name="work_mode_off_title" msgid="2615362773958585967">"เปิดโหมดงานไหม"</string> - <string name="work_mode_off_message" msgid="2961559609199223594">"การดำเนินการนี้จะเปิดโปรไฟล์งานของคุณ รวมถึงแอป การซิงค์ในพื้นหลัง และคุณลักษณะที่เกี่ยวข้อง"</string> + <string name="work_mode_off_message" msgid="2961559609199223594">"การดำเนินการนี้จะเปิดโปรไฟล์งานของคุณ รวมถึงแอป การซิงค์ในพื้นหลัง และฟีเจอร์ที่เกี่ยวข้อง"</string> <string name="work_mode_turn_on" msgid="2062544985670564875">"เปิด"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"คุณมีข้อความใหม่"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"เปิดแอป SMS เพื่อดู"</string> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index c7b0b35e27d4..94228ab6a33a 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -475,6 +475,9 @@ <integer translatable="false" name="config_wifi_framework_SECURITY_AWARD">80</integer> <!-- Integer specifying the base interval in seconds for the exponential backoff scan for autojoin --> <integer translatable="false" name="config_wifi_framework_exponential_backoff_scan_base_interval">20</integer> + <!-- Integers specifying the max packet Tx/Rx rates for full scan --> + <integer translatable="false" name="config_wifi_framework_max_tx_rate_for_full_scan">8</integer> + <integer translatable="false" name="config_wifi_framework_max_rx_rate_for_full_scan">16</integer> <!-- Integer parameters of the wifi to cellular handover feature wifi should not stick to bad networks --> <integer translatable="false" name="config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz">-82</integer> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 53b5d501c471..ca3baa6c63a6 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -372,6 +372,8 @@ <java-symbol type="integer" name="config_wifi_tx_cur_ma" /> <java-symbol type="integer" name="config_wifi_operating_voltage_mv" /> <java-symbol type="string" name="config_wifi_framework_sap_2G_channel_list" /> + <java-symbol type="integer" name="config_wifi_framework_max_tx_rate_for_full_scan" /> + <java-symbol type="integer" name="config_wifi_framework_max_rx_rate_for_full_scan" /> <java-symbol type="bool" name="config_wifi_framework_cellular_handover_enable_user_triggered_adjustment" /> <java-symbol type="integer" name="config_wifi_framework_associated_full_scan_tx_packet_threshold" /> diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml index 63adeb7ece20..e127896a7091 100644 --- a/core/tests/coretests/AndroidManifest.xml +++ b/core/tests/coretests/AndroidManifest.xml @@ -1310,14 +1310,16 @@ </intent-filter> </activity> - <activity android:name="android.animation.BasicAnimatorActivity"> + <activity android:name="android.animation.BasicAnimatorActivity" + android:screenOrientation="locked"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" /> </intent-filter> </activity> - <activity android:name="android.animation.AnimatorSetActivity"> + <activity android:name="android.animation.AnimatorSetActivity" + android:screenOrientation="locked"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" /> diff --git a/core/tests/coretests/src/android/transition/FadeTransitionTest.java b/core/tests/coretests/src/android/transition/FadeTransitionTest.java index 3bd3df4e0a0b..674b36355ab0 100644 --- a/core/tests/coretests/src/android/transition/FadeTransitionTest.java +++ b/core/tests/coretests/src/android/transition/FadeTransitionTest.java @@ -48,23 +48,23 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato View square1 = mActivity.findViewById(R.id.square1); Fade fadeOut = new Fade(Fade.MODE_OUT); TransitionLatch latch = setVisibilityInTransition(fadeOut, R.id.square1, View.INVISIBLE); - assertTrue(latch.startLatch.await(200, TimeUnit.MILLISECONDS)); + assertTrue(latch.startLatch.await(400, TimeUnit.MILLISECONDS)); assertEquals(View.VISIBLE, square1.getVisibility()); waitForAnimation(); assertFalse(square1.getTransitionAlpha() == 0 || square1.getTransitionAlpha() == 1); - assertTrue(latch.endLatch.await(400, TimeUnit.MILLISECONDS)); + assertTrue(latch.endLatch.await(800, TimeUnit.MILLISECONDS)); assertEquals(1.0f, square1.getTransitionAlpha()); assertEquals(View.INVISIBLE, square1.getVisibility()); Fade fadeIn = new Fade(Fade.MODE_IN); latch = setVisibilityInTransition(fadeIn, R.id.square1, View.VISIBLE); - assertTrue(latch.startLatch.await(200, TimeUnit.MILLISECONDS)); + assertTrue(latch.startLatch.await(400, TimeUnit.MILLISECONDS)); assertEquals(View.VISIBLE, square1.getVisibility()); waitForAnimation(); final float transitionAlpha = square1.getTransitionAlpha(); assertTrue("expecting transitionAlpha to be between 0 and 1. Was " + transitionAlpha, transitionAlpha > 0 && transitionAlpha < 1); - assertTrue(latch.endLatch.await(400, TimeUnit.MILLISECONDS)); + assertTrue(latch.endLatch.await(800, TimeUnit.MILLISECONDS)); assertEquals(1.0f, square1.getTransitionAlpha()); assertEquals(View.VISIBLE, square1.getVisibility()); } @@ -76,14 +76,14 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato FadeValueCheck fadeOutValueCheck = new FadeValueCheck(square1); fadeOut.addListener(fadeOutValueCheck); TransitionLatch outLatch = setVisibilityInTransition(fadeOut, R.id.square1, View.INVISIBLE); - assertTrue(outLatch.startLatch.await(200, TimeUnit.MILLISECONDS)); + assertTrue(outLatch.startLatch.await(400, TimeUnit.MILLISECONDS)); waitForAnimation(); Fade fadeIn = new Fade(Fade.MODE_IN); FadeValueCheck fadeInValueCheck = new FadeValueCheck(square1); fadeIn.addListener(fadeInValueCheck); TransitionLatch inLatch = setVisibilityInTransition(fadeIn, R.id.square1, View.VISIBLE); - assertTrue(inLatch.startLatch.await(200, TimeUnit.MILLISECONDS)); + assertTrue(inLatch.startLatch.await(400, TimeUnit.MILLISECONDS)); assertEquals(fadeOutValueCheck.pauseTransitionAlpha, fadeInValueCheck.startTransitionAlpha); assertTrue("expecting transitionAlpha to be between 0 and 1. Was " + @@ -91,7 +91,7 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato fadeOutValueCheck.pauseTransitionAlpha > 0 && fadeOutValueCheck.pauseTransitionAlpha < 1); - assertTrue(inLatch.endLatch.await(400, TimeUnit.MILLISECONDS)); + assertTrue(inLatch.endLatch.await(800, TimeUnit.MILLISECONDS)); assertEquals(1.0f, square1.getTransitionAlpha()); assertEquals(View.VISIBLE, square1.getVisibility()); } @@ -109,14 +109,14 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato FadeValueCheck fadeInValueCheck = new FadeValueCheck(square1); fadeIn.addListener(fadeInValueCheck); TransitionLatch inLatch = setVisibilityInTransition(fadeIn, R.id.square1, View.VISIBLE); - assertTrue(inLatch.startLatch.await(200, TimeUnit.MILLISECONDS)); + assertTrue(inLatch.startLatch.await(400, TimeUnit.MILLISECONDS)); waitForAnimation(); Fade fadeOut = new Fade(Fade.MODE_OUT); FadeValueCheck fadeOutValueCheck = new FadeValueCheck(square1); fadeOut.addListener(fadeOutValueCheck); TransitionLatch outLatch = setVisibilityInTransition(fadeOut, R.id.square1, View.INVISIBLE); - assertTrue(outLatch.startLatch.await(200, TimeUnit.MILLISECONDS)); + assertTrue(outLatch.startLatch.await(400, TimeUnit.MILLISECONDS)); assertEquals(fadeInValueCheck.pauseTransitionAlpha, fadeOutValueCheck.startTransitionAlpha); assertTrue("expecting transitionAlpha to be between 0 and 1. Was " + @@ -124,7 +124,7 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato fadeInValueCheck.pauseTransitionAlpha > 0 && fadeInValueCheck.pauseTransitionAlpha < 1); - assertTrue(outLatch.endLatch.await(400, TimeUnit.MILLISECONDS)); + assertTrue(outLatch.endLatch.await(800, TimeUnit.MILLISECONDS)); assertEquals(1.0f, square1.getTransitionAlpha()); assertEquals(View.INVISIBLE, square1.getVisibility()); } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java index 9aabdbb2c8f0..c539f789ff60 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java @@ -205,9 +205,9 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // App in foreground bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); - // Start timer + // Start timer (optimized) curr = 1000 * (clocks.realtime = clocks.uptime = 202); - bi.noteBluetoothScanStartedFromSourceLocked(ws); + bi.noteBluetoothScanStartedFromSourceLocked(ws, false); // Move to background curr = 1000 * (clocks.realtime = clocks.uptime = 254); @@ -221,21 +221,44 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { curr = 1000 * (clocks.realtime = clocks.uptime = 409); bi.noteBluetoothScanStoppedFromSourceLocked(ws); + // Start timer (unoptimized) + curr = 1000 * (clocks.realtime = clocks.uptime = 1000); + bi.noteBluetoothScanStartedFromSourceLocked(ws, true); + + // On battery + curr = 1000 * (clocks.realtime = clocks.uptime = 2001); + bi.updateTimeBasesLocked(true, false, curr, curr); // on battery + + // Move to foreground + curr = 1000 * (clocks.realtime = clocks.uptime = 3004); + bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_TOP); + + // Stop timer + curr = 1000 * (clocks.realtime = clocks.uptime = 4008); + bi.noteBluetoothScanStoppedFromSourceLocked(ws); + // Test - curr = 1000 * (clocks.realtime = clocks.uptime = 657); + curr = 1000 * (clocks.realtime = clocks.uptime = 5000); BatteryStats.Timer timer = bi.getUidStats().get(UID).getBluetoothScanTimer(); BatteryStats.Timer bgTimer = bi.getUidStats().get(UID).getBluetoothScanBackgroundTimer(); + BatteryStats.Timer badTimer = bi.getUidStats().get(UID).getBluetoothUnoptimizedScanTimer(); + BatteryStats.Timer badBgTimer = bi.getUidStats().get(UID) + .getBluetoothUnoptimizedScanBackgroundTimer(); long time = timer.getTotalTimeLocked(curr, STATS_SINCE_CHARGED); int count = timer.getCountLocked(STATS_SINCE_CHARGED); int bgCount = bgTimer.getCountLocked(STATS_SINCE_CHARGED); long actualTime = timer.getTotalDurationMsLocked(clocks.realtime) * 1000; long bgTime = bgTimer.getTotalDurationMsLocked(clocks.realtime) * 1000; - assertEquals((305 - 202) * 1000, time); - assertEquals(1, count); - assertEquals(0, bgCount); - assertEquals((305 - 202) * 1000, actualTime); - assertEquals((305 - 254) * 1000, bgTime); + long badTime = badTimer.getTotalDurationMsLocked(clocks.realtime) * 1000; + long badBgTime = badBgTimer.getTotalDurationMsLocked(clocks.realtime) * 1000; + assertEquals((305 - 202 + 4008 - 2001) * 1000, time); + assertEquals(1, count); // second scan starts off-battery + assertEquals(0, bgCount); // first scan starts in fg, second starts off-battery + assertEquals((305 - 202 + 4008 - 2001) * 1000, actualTime); + assertEquals((305 - 254 + 3004 - 2001) * 1000, bgTime); + assertEquals((4008 - 2001) * 1000, badTime); + assertEquals((3004 - 2001) * 1000, badBgTime); } @SmallTest diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java new file mode 100644 index 000000000000..08f8dd146516 --- /dev/null +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsCounterTest.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.android.internal.os; + +import android.os.BatteryStats; +import android.os.Parcel; +import android.support.test.filters.SmallTest; + +import junit.framework.TestCase; + +/** + * Test BatteryStatsImpl.Counter. + */ +public class BatteryStatsCounterTest extends TestCase { + + @SmallTest + public void testCounter() throws Exception { + final MockClocks clocks = new MockClocks(); // holds realtime and uptime in ms + final BatteryStatsImpl.TimeBase timeBase = new BatteryStatsImpl.TimeBase(); + timeBase.init(clocks.uptimeMillis(), clocks.elapsedRealtime()); + + final BatteryStatsImpl.Counter counter = new BatteryStatsImpl.Counter(timeBase); + + // timeBase off (i.e. plugged in) + timeBase.setRunning(false, 1, 1); + counter.stepAtomic(); + counter.stepAtomic(); + counter.stepAtomic(); + counter.stepAtomic(); + counter.stepAtomic(); + assertEquals(0, counter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(0, counter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(0, counter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase on (i.e. unplugged) + timeBase.setRunning(true, 2, 2); + counter.stepAtomic(); + counter.stepAtomic(); + counter.stepAtomic(); + counter.stepAtomic(); + assertEquals(4, counter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(4, counter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(4, counter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase off (i.e. plugged in) + timeBase.setRunning(false, 3, 3); + counter.stepAtomic(); + counter.stepAtomic(); + counter.stepAtomic(); + assertEquals(4, counter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(4, counter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(4, counter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase on (i.e. unplugged) + timeBase.setRunning(true, 4, 4); + counter.stepAtomic(); + counter.stepAtomic(); + assertEquals(6, counter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(6, counter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(2, counter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + } + + + @SmallTest + public void testParceling() throws Exception { + final MockClocks clocks = new MockClocks(); // holds realtime and uptime in ms + final BatteryStatsImpl.TimeBase timeBase = new BatteryStatsImpl.TimeBase(); + timeBase.init(clocks.uptimeMillis(), clocks.elapsedRealtime()); + + final BatteryStatsImpl.Counter origCounter = new BatteryStatsImpl.Counter(timeBase); + + // timeBase on (i.e. unplugged) + timeBase.setRunning(true, 1, 1); + origCounter.stepAtomic(); origCounter.stepAtomic(); origCounter.stepAtomic(); // three times + assertEquals(3, origCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(3, origCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(3, origCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // Test summary parcelling (from origCounter) + final Parcel summaryParcel = Parcel.obtain(); + origCounter.writeSummaryFromParcelLocked(summaryParcel); + summaryParcel.setDataPosition(0); + final BatteryStatsImpl.Counter summaryCounter = new BatteryStatsImpl.Counter(timeBase); + summaryCounter.stepAtomic(); // occurs before reading the summary, so must not count later + summaryCounter.readSummaryFromParcelLocked(summaryParcel); + + // timeBase still on (i.e. unplugged) + summaryCounter.stepAtomic(); // once + assertEquals(4, summaryCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(1, summaryCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(1, summaryCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase off (i.e. plugged in) + timeBase.setRunning(false, 3, 3); + summaryCounter.stepAtomic(); summaryCounter.stepAtomic(); // twice + assertEquals(4, summaryCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(1, summaryCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(1, summaryCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase on (i.e. unplugged) + timeBase.setRunning(true, 4, 4); + summaryCounter.stepAtomic(); summaryCounter.stepAtomic(); // twice + assertEquals(6, summaryCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(3, summaryCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(2, summaryCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + + // Test full parcelling (from summaryCounter) + final Parcel fullParcel = Parcel.obtain(); + summaryCounter.writeToParcel(fullParcel); + fullParcel.setDataPosition(0); + final BatteryStatsImpl.Counter fullParcelCounter + = new BatteryStatsImpl.Counter(timeBase, fullParcel); + + // timeBase still on (i.e. unplugged) + fullParcelCounter.stepAtomic(); // once + assertEquals(7, fullParcelCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(4, fullParcelCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(3, fullParcelCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase off (i.e. plugged in) + timeBase.setRunning(false, 5, 5); + fullParcelCounter.stepAtomic(); fullParcelCounter.stepAtomic(); // twice + assertEquals(7, fullParcelCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(4, fullParcelCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(3, fullParcelCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + + // timeBase on (i.e. unplugged) + timeBase.setRunning(true, 6, 6); + fullParcelCounter.stepAtomic(); fullParcelCounter.stepAtomic(); // twice + assertEquals(9, fullParcelCounter.getCountLocked(BatteryStats.STATS_SINCE_CHARGED)); + assertEquals(6, fullParcelCounter.getCountLocked(BatteryStats.STATS_CURRENT)); + assertEquals(2, fullParcelCounter.getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED)); + } +} diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java index 06ca18d072e7..4e8ab316e1c9 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java @@ -37,12 +37,28 @@ public class BatteryStatsNoteTest extends TestCase{ public void testNoteBluetoothScanResultLocked() throws Exception { MockBatteryStatsImpl bi = new MockBatteryStatsImpl(new MockClocks()); bi.updateTimeBasesLocked(true, true, 0, 0); + bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_TOP); bi.noteBluetoothScanResultsFromSourceLocked(WS, 1); bi.noteBluetoothScanResultsFromSourceLocked(WS, 100); assertEquals(101, bi.getUidStats().get(UID).getBluetoothScanResultCounter() .getCountLocked(STATS_SINCE_CHARGED)); + // TODO: remove next line when Counter misreporting values when plugged-in bug is fixed. + bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND); + BatteryStats.Counter bgCntr = bi.getUidStats().get(UID).getBluetoothScanResultBgCounter(); + if (bgCntr != null) { + assertEquals(0, bgCntr.getCountLocked(STATS_SINCE_CHARGED)); + } + + bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND); + bi.noteBluetoothScanResultsFromSourceLocked(WS, 17); + assertEquals(101 + 17, + bi.getUidStats().get(UID).getBluetoothScanResultCounter() + .getCountLocked(STATS_SINCE_CHARGED)); + assertEquals(17, + bi.getUidStats().get(UID).getBluetoothScanResultBgCounter() + .getCountLocked(STATS_SINCE_CHARGED)); } /** Test BatteryStatsImpl.Uid.noteStartWakeLocked. */ diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java index 3a16fcff38a2..1412d3e7df59 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java @@ -5,17 +5,18 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ + BatteryStatsBackgroundStatsTest.class, + BatteryStatsCounterTest.class, BatteryStatsDualTimerTest.class, BatteryStatsDurationTimerTest.class, + BatteryStatsNoteTest.class, BatteryStatsSamplingTimerTest.class, + BatteryStatsSensorTest.class, BatteryStatsServTest.class, BatteryStatsStopwatchTimerTest.class, BatteryStatsTimeBaseTest.class, BatteryStatsTimerTest.class, BatteryStatsUidTest.class, - BatteryStatsSensorTest.class, - BatteryStatsBackgroundStatsTest.class, - BatteryStatsNoteTest.class, }) public class BatteryStatsTests { } diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk index 14b032e37f4c..c66a10cc31f7 100644 --- a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/Android.mk @@ -18,7 +18,7 @@ LOCAL_PATH:= $(call my-dir) ## The application with a minimal main dex include $(CLEAR_VARS) -LOCAL_STATIC_JAVA_LIBRARIES := android-support-multidex +LOCAL_STATIC_JAVA_LIBRARIES := android-support-multidex android-support-multidex-instrumentation android-support-test LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := $(call all-java-files-under, src) @@ -35,16 +35,11 @@ mainDexList:= \ $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),$(LOCAL_IS_HOST_MODULE),common)/maindex.list LOCAL_DX_FLAGS := --multi-dex --main-dex-list=$(mainDexList) --minimal-main-dex -LOCAL_JACK_FLAGS := -D jack.dex.output.policy=minimal-multidex -D jack.preprocessor=true\ - -D jack.preprocessor.file=$(LOCAL_PATH)/test.jpp -D jack.dex.output.multidex.legacy=true -################################# -include $(BUILD_SYSTEM)/configure_local_jack.mk -################################# +LOCAL_MIN_SDK_VERSION := 8 -ifdef LOCAL_JACK_ENABLED -LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/test.jpp -endif +LOCAL_JACK_FLAGS := -D jack.dex.output.policy=minimal-multidex \ + -D jack.dex.output.multidex.legacy=true include $(BUILD_PACKAGE) diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/AndroidManifest.xml b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/AndroidManifest.xml index 7fff71118604..98d8f27179fd 100644 --- a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/AndroidManifest.xml +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/AndroidManifest.xml @@ -22,7 +22,15 @@ <uses-library android:name="android.test.runner" /> </application> - <instrumentation android:name="android.test.InstrumentationTestRunner" + <instrumentation android:name="com.android.test.runner.MultiDexTestRunner" + android:targetPackage="com.android.multidexlegacyandexception" + android:label="Test for MultiDexLegacyAndException" /> + + <instrumentation android:name="com.android.multidexlegacyandexception.tests.MultiDexAndroidJUnitRunner" + android:targetPackage="com.android.multidexlegacyandexception" + android:label="Test for MultiDexLegacyAndException" /> + + <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner" android:targetPackage="com.android.multidexlegacyandexception" android:label="Test for MultiDexLegacyAndException" /> </manifest> diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/Test.java b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/ActivityTest.java index 8d065a43ac61..d6ac3e57242b 100644 --- a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/Test.java +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/ActivityTest.java @@ -13,16 +13,31 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.android.multidexlegacyandexception; +package com.android.multidexlegacyandexception.tests; + +import com.android.multidexlegacyandexception.CaughtOnlyByIntermediateException; +import com.android.multidexlegacyandexception.CaughtOnlyException; +import com.android.multidexlegacyandexception.ExceptionInMainDex; +import com.android.multidexlegacyandexception.ExceptionInMainDex2; +import com.android.multidexlegacyandexception.ExceptionInSecondaryDex; +import com.android.multidexlegacyandexception.ExceptionInSecondaryDex2; +import com.android.multidexlegacyandexception.ExceptionInSecondaryDexWithSuperInMain; +import com.android.multidexlegacyandexception.IntermediateClass; +import com.android.multidexlegacyandexception.MainActivity; +import com.android.multidexlegacyandexception.MiniIntermediateClass; +import com.android.multidexlegacyandexception.SuperExceptionInMainDex; +import com.android.multidexlegacyandexception.SuperExceptionInSecondaryDex; +import com.android.multidexlegacyandexception.TestApplication; /** - * Run the tests with: <code>adb shell am instrument -w - com.android.multidexlegacyandexception/android.test.InstrumentationTestRunner + * Run the tests with: + * <code> +adb shell am instrument -w com.android.multidexlegacyandexception/com.android.multidexlegacyandexception.tests.MultiDexAndroidJUnitRunner </code> */ @SuppressWarnings("deprecation") -public class Test extends android.test.ActivityInstrumentationTestCase2<MainActivity> { - public Test() { +public class ActivityTest extends android.test.ActivityInstrumentationTestCase2<MainActivity> { + public ActivityTest() { super(MainActivity.class); } diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/MultiDexAndroidJUnitRunner.java b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/MultiDexAndroidJUnitRunner.java new file mode 100644 index 000000000000..758ac1dcb4a0 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/MultiDexAndroidJUnitRunner.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2016 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.multidexlegacyandexception.tests; + +import android.os.Bundle; +import android.support.multidex.MultiDex; +import android.support.test.runner.AndroidJUnitRunner; + +public class MultiDexAndroidJUnitRunner extends AndroidJUnitRunner { + + @Override + public void onCreate(Bundle arguments) { + MultiDex.installInstrumentation(getContext(), getTargetContext()); + super.onCreate(arguments); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityIntermediate.java b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityIntermediate.java new file mode 100644 index 000000000000..3a8acc6b59be --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityIntermediate.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2016 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.multidexlegacyandexception.tests; + +public class NoActivityIntermediate { + + public static int get() { + return NoActivitySubTest.get(); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityJUnit3Test.java b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityJUnit3Test.java new file mode 100644 index 000000000000..31cb939813d3 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityJUnit3Test.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.android.multidexlegacyandexception.tests; + +import android.test.InstrumentationTestCase; +import com.android.multidexlegacyandexception.CaughtOnlyByIntermediateException; +import com.android.multidexlegacyandexception.CaughtOnlyException; +import com.android.multidexlegacyandexception.ExceptionInMainDex; +import com.android.multidexlegacyandexception.ExceptionInMainDex2; +import com.android.multidexlegacyandexception.ExceptionInSecondaryDex; +import com.android.multidexlegacyandexception.ExceptionInSecondaryDex2; +import com.android.multidexlegacyandexception.ExceptionInSecondaryDexWithSuperInMain; +import com.android.multidexlegacyandexception.IntermediateClass; +import com.android.multidexlegacyandexception.MiniIntermediateClass; +import com.android.multidexlegacyandexception.SuperExceptionInMainDex; +import com.android.multidexlegacyandexception.SuperExceptionInSecondaryDex; +import com.android.multidexlegacyandexception.TestApplication; +import junit.framework.Assert; + +/** + * Run the tests with: <code> +adb shell am instrument -w com.android.multidexlegacyandexception/com.android.test.runner.MultiDexTestRunner +</code> + * or <code> +adb shell am instrument -w com.android.multidexlegacyandexception/com.android.multidexlegacyandexception.tests.MultiDexAndroidJUnitRunner +</code> + */ +@SuppressWarnings("deprecation") +public class NoActivityJUnit3Test extends InstrumentationTestCase { + + @org.junit.Test + public void testExceptionInMainDex() { + Assert.assertEquals(10, TestApplication.get(true)); + } + + @org.junit.Test + public void testExceptionInIntermediate() { + Assert.assertEquals(11, IntermediateClass.get3(true)); + Assert.assertEquals(11, MiniIntermediateClass.get3(true)); + Assert.assertEquals(11, IntermediateClass.get4(true)); + Assert.assertEquals(1, IntermediateClass.get5(null)); + Assert.assertEquals(10, IntermediateClass.get5(new ExceptionInMainDex())); + Assert.assertEquals(11, IntermediateClass.get5(new ExceptionInSecondaryDex())); + Assert.assertEquals(12, IntermediateClass.get5(new ExceptionInMainDex2())); + Assert.assertEquals(13, IntermediateClass.get5(new ExceptionInSecondaryDex2())); + Assert.assertEquals(14, IntermediateClass.get5(new OutOfMemoryError())); + Assert.assertEquals(17, IntermediateClass.get5(new CaughtOnlyException())); + Assert.assertEquals(39, IntermediateClass.get5(new ExceptionInSecondaryDexWithSuperInMain())); + Assert.assertEquals(23, IntermediateClass.get5(new SuperExceptionInSecondaryDex())); + Assert.assertEquals(23, IntermediateClass.get5(new SuperExceptionInMainDex())); + Assert.assertEquals(23, IntermediateClass.get5(new CaughtOnlyByIntermediateException())); + Assert.assertEquals(37, IntermediateClass.get5(new ArrayIndexOutOfBoundsException())); + } + + @org.junit.Test + public void testMultidexedTest() { + Assert.assertEquals(7, NoActivityIntermediate.get()); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityJUnit4Test.java b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityJUnit4Test.java new file mode 100644 index 000000000000..94a5b7fa66f2 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivityJUnit4Test.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2016 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.multidexlegacyandexception.tests; + +import android.support.test.runner.AndroidJUnit4; +import org.junit.runner.RunWith; + +/** + * Run the tests with: <code> +adb shell am instrument -w com.android.multidexlegacyandexception/com.android.test.runner.MultiDexTestRunner +</code> + * or <code> +adb shell am instrument -w com.android.multidexlegacyandexception/com.android.multidexlegacyandexception.tests.MultiDexAndroidJUnitRunner +</code> + */ +@RunWith(AndroidJUnit4.class) +public class NoActivityJUnit4Test extends NoActivityJUnit3Test { + + @org.junit.Test + public void multidexedTestJUnit4() { + super.testMultidexedTest(); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivitySubTest.java b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivitySubTest.java new file mode 100644 index 000000000000..4885c2ef5865 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/src/com/android/multidexlegacyandexception/tests/NoActivitySubTest.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2016 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.multidexlegacyandexception.tests; + +public class NoActivitySubTest { + + public static int get() { + return 7; + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/test.jpp b/core/tests/hosttests/test-apps/MultiDexLegacyAndException/test.jpp deleted file mode 100644 index 0d027ed236fb..000000000000 --- a/core/tests/hosttests/test-apps/MultiDexLegacyAndException/test.jpp +++ /dev/null @@ -1,3 +0,0 @@ -test: - @@com.android.jack.annotations.ForceInMainDex - class com.android.multidexlegacyandexception.Test diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk index 208eceb6273d..278419315779 100644 --- a/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestApp/Android.mk @@ -44,6 +44,8 @@ ifdef LOCAL_JACK_ENABLED LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/test.jpp endif +LOCAL_MIN_SDK_VERSION := 8 + include $(BUILD_PACKAGE) ifndef LOCAL_JACK_ENABLED @@ -85,6 +87,8 @@ ifdef LOCAL_JACK_ENABLED LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/test.jpp endif +LOCAL_MIN_SDK_VERSION := 8 + include $(BUILD_PACKAGE) ifndef LOCAL_JACK_ENABLED diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/Android.mk new file mode 100644 index 000000000000..69ec5ceb1daf --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/Android.mk @@ -0,0 +1,40 @@ +# Copyright (C) 2014 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH:= $(call my-dir) + + +## The application with a minimal main dex +include $(CLEAR_VARS) + +LOCAL_STATIC_JAVA_LIBRARIES := android-support-multidex-instrumentation +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_SDK_VERSION := 8 + +LOCAL_PACKAGE_NAME := MultiDexLegacyTestAppTests + +LOCAL_DEX_PREOPT := false + +LOCAL_JAVACFLAGS := -nowarn + +LOCAL_MIN_SDK_VERSION := 8 + +LOCAL_INSTRUMENTATION_FOR := MultiDexLegacyTestApp + +LOCAL_JACK_FLAGS := -D jack.dex.output.policy=minimal-multidex -D jack.dex.output.multidex.legacy=true + +include $(BUILD_PACKAGE) diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/AndroidManifest.xml b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/AndroidManifest.xml new file mode 100644 index 000000000000..35369c7da6a1 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/AndroidManifest.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.multidexlegacytestapp.test" + android:versionCode="1" + android:versionName="1.0" > + + <uses-sdk android:minSdkVersion="8" /> + <instrumentation + android:name="com.android.test.runner.MultiDexTestRunner" + android:targetPackage="com.android.multidexlegacytestapp" /> + <instrumentation + android:name="android.test.InstrumentationTestRunner" + android:targetPackage="com.android.multidexlegacytestapp" /> + + <application + android:label="multidexlegacytestapp.test" > + <uses-library android:name="android.test.runner" /> + </application> +</manifest>
\ No newline at end of file diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/InstrumentationTest.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/InstrumentationTest.java new file mode 100644 index 000000000000..a0288f2e0d9c --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/InstrumentationTest.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.android.multidexlegacytestapp.test; + +import android.test.InstrumentationTestCase; +import com.android.multidexlegacytestapp.manymethods.Big001; +import com.android.multidexlegacytestapp.manymethods.Big079; +import junit.framework.Assert; + +/** + * Run the tests with: <code> +adb shell am instrument -w com.android.multidexlegacytestapp.test/com.android.test.runner.MultiDexTestRunner +</code> + */ +public class InstrumentationTest extends InstrumentationTestCase { + + public void testExceptionInMainDex() { + Assert.assertEquals(0, new Big001().get0()); + Assert.assertEquals(100, new Big079().get100()); + } + + public void testMultidexedTest() { + Assert.assertEquals(7, Intermediate.get()); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/Intermediate.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/Intermediate.java new file mode 100644 index 000000000000..9a79c7aa4db7 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/Intermediate.java @@ -0,0 +1,9 @@ +package com.android.multidexlegacytestapp.test; + +public class Intermediate { + + public static int get() { + return SubTest.get(); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/SubTest.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/SubTest.java new file mode 100644 index 000000000000..e28584b5f321 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests/src/com/android/multidexlegacytestapp/test/SubTest.java @@ -0,0 +1,11 @@ +package com.android.multidexlegacytestapp.test; + +import com.android.multidexlegacytestapp.manymethods.Big080; + +public class SubTest { + + public static int get() { + return new Big080().get7(); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/Android.mk b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/Android.mk new file mode 100644 index 000000000000..f2bd35363003 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/Android.mk @@ -0,0 +1,63 @@ +# Copyright (C) 2014 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH:= $(call my-dir) + + +## The tests with only one dex +include $(CLEAR_VARS) + +LOCAL_STATIC_JAVA_LIBRARIES := android-support-multidex-instrumentation android-support-test +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_SDK_VERSION := current + +LOCAL_PACKAGE_NAME := MultiDexLegacyTestAppTests2 + +LOCAL_DEX_PREOPT := false + +LOCAL_JAVACFLAGS := -nowarn + +LOCAL_MIN_SDK_VERSION := 8 + +LOCAL_INSTRUMENTATION_FOR := MultiDexLegacyTestApp + +include $(BUILD_PACKAGE) + + +## The tests with a minimal main dex +include $(CLEAR_VARS) + +LOCAL_STATIC_JAVA_LIBRARIES := android-support-multidex-instrumentation android-support-test +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_SDK_VERSION := 8 + +LOCAL_PACKAGE_NAME := MultiDexLegacyTestAppTests2-multidex + +LOCAL_DEX_PREOPT := false + +LOCAL_JAVACFLAGS := -nowarn + +LOCAL_MIN_SDK_VERSION := 8 + +LOCAL_INSTRUMENTATION_FOR := MultiDexLegacyTestApp + +LOCAL_JACK_FLAGS := -D jack.dex.output.policy=minimal-multidex -D jack.dex.output.multidex.legacy=true + +include $(BUILD_PACKAGE) diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/AndroidManifest.xml b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/AndroidManifest.xml new file mode 100644 index 000000000000..1cadfcdf3b81 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/AndroidManifest.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.multidexlegacytestapp.test2" + android:versionCode="1" + android:versionName="1.0" > + + <uses-sdk android:minSdkVersion="8" /> + <instrumentation + android:name="com.android.multidexlegacytestapp.test2.MultiDexAndroidJUnitRunner" + android:targetPackage="com.android.multidexlegacytestapp" /> + + <application + android:label="multidexlegacytestapp.test" > + <uses-library android:name="android.test.runner" /> + </application> +</manifest>
\ No newline at end of file diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/InstrumentationTest.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/InstrumentationTest.java new file mode 100644 index 000000000000..4e6ec142e690 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/InstrumentationTest.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.android.multidexlegacytestapp.test2; + +import android.support.test.runner.AndroidJUnit4; +import com.android.multidexlegacytestapp.manymethods.Big001; +import com.android.multidexlegacytestapp.manymethods.Big079; +import junit.framework.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Run the tests with: <code>adb shell am instrument -w + com.android.multidexlegacytestapp.test2/com.android.multidexlegacytestapp.test2.MultiDexAndroidJUnitRunner +</code> + */ +@RunWith(AndroidJUnit4.class) +public class InstrumentationTest { + + @Test + public void exceptionInMainDex() { + Assert.assertEquals(0, new Big001().get0()); + Assert.assertEquals(100, new Big079().get100()); + } + + @Test + public void multidexedTest() { + Assert.assertEquals(7, Intermediate.get()); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/Intermediate.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/Intermediate.java new file mode 100644 index 000000000000..3e5e81e5babb --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/Intermediate.java @@ -0,0 +1,9 @@ +package com.android.multidexlegacytestapp.test2; + +public class Intermediate { + + public static int get() { + return SubTest.get(); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/MultiDexAndroidJUnitRunner.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/MultiDexAndroidJUnitRunner.java new file mode 100644 index 000000000000..963f90432dd7 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/MultiDexAndroidJUnitRunner.java @@ -0,0 +1,15 @@ +package com.android.multidexlegacytestapp.test2; + +import android.os.Bundle; +import android.support.multidex.MultiDex; +import android.support.test.runner.AndroidJUnitRunner; + +public class MultiDexAndroidJUnitRunner extends AndroidJUnitRunner { + + @Override + public void onCreate(Bundle arguments) { + MultiDex.installInstrumentation(getContext(), getTargetContext()); + super.onCreate(arguments); + } + +} diff --git a/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/SubTest.java b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/SubTest.java new file mode 100644 index 000000000000..acff80fdd846 --- /dev/null +++ b/core/tests/hosttests/test-apps/MultiDexLegacyTestAppTests2/src/com/android/multidexlegacytestapp/test2/SubTest.java @@ -0,0 +1,11 @@ +package com.android.multidexlegacytestapp.test2; + +import com.android.multidexlegacytestapp.manymethods.Big080; + +public class SubTest { + + public static int get() { + return new Big080().get7(); + } + +} diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml index 318353ffbaa1..ae93608726a3 100644 --- a/data/fonts/fonts.xml +++ b/data/fonts/fonts.xml @@ -51,10 +51,13 @@ <font weight="300" style="italic">RobotoCondensed-LightItalic.ttf</font> <font weight="400" style="normal">RobotoCondensed-Regular.ttf</font> <font weight="400" style="italic">RobotoCondensed-Italic.ttf</font> + <font weight="500" style="normal">RobotoCondensed-Medium.ttf</font> + <font weight="500" style="italic">RobotoCondensed-MediumItalic.ttf</font> <font weight="700" style="normal">RobotoCondensed-Bold.ttf</font> <font weight="700" style="italic">RobotoCondensed-BoldItalic.ttf</font> </family> <alias name="sans-serif-condensed-light" to="sans-serif-condensed" weight="300" /> + <alias name="sans-serif-condensed-medium" to="sans-serif-condensed" weight="500" /> <family name="serif"> <font weight="400" style="normal">NotoSerif-Regular.ttf</font> diff --git a/data/sounds/AudioTv.mk b/data/sounds/AudioTv.mk deleted file mode 100644 index ee37cb943872..000000000000 --- a/data/sounds/AudioTv.mk +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 2017 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 := frameworks/base/data/sounds - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \ - $(LOCAL_PATH)/Alarm_Beep_02.ogg:system/media/audio/alarms/Alarm_Beep_02.ogg \ - $(LOCAL_PATH)/Alarm_Beep_03.ogg:system/media/audio/alarms/Alarm_Beep_03.ogg \ - $(LOCAL_PATH)/Alarm_Buzzer.ogg:system/media/audio/alarms/Alarm_Buzzer.ogg \ - $(LOCAL_PATH)/Alarm_Classic.ogg:system/media/audio/alarms/Alarm_Classic.ogg \ - $(LOCAL_PATH)/Alarm_Rooster_02.ogg:system/media/audio/alarms/Alarm_Rooster_02.ogg \ - $(LOCAL_PATH)/alarms/ogg/Argon.ogg:system/media/audio/alarms/Argon.ogg \ - $(LOCAL_PATH)/alarms/ogg/Barium.ogg:system/media/audio/alarms/Barium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Carbon.ogg:system/media/audio/alarms/Carbon.ogg \ - $(LOCAL_PATH)/alarms/ogg/Cesium.ogg:system/media/audio/alarms/Cesium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Fermium.ogg:system/media/audio/alarms/Fermium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Hassium.ogg:system/media/audio/alarms/Hassium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Helium.ogg:system/media/audio/alarms/Helium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Krypton.ogg:system/media/audio/alarms/Krypton.ogg \ - $(LOCAL_PATH)/alarms/ogg/Neon.ogg:system/media/audio/alarms/Neon.ogg \ - $(LOCAL_PATH)/alarms/ogg/Neptunium.ogg:system/media/audio/alarms/Neptunium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Nobelium.ogg:system/media/audio/alarms/Nobelium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Osmium.ogg:system/media/audio/alarms/Osmium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Oxygen.ogg:system/media/audio/alarms/Oxygen.ogg \ - $(LOCAL_PATH)/alarms/ogg/Platinum.ogg:system/media/audio/alarms/Platinum.ogg \ - $(LOCAL_PATH)/alarms/ogg/Plutonium.ogg:system/media/audio/alarms/Plutonium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Promethium.ogg:system/media/audio/alarms/Promethium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Scandium.ogg:system/media/audio/alarms/Scandium.ogg \ - $(LOCAL_PATH)/effects/ogg/camera_click_48k.ogg:system/media/audio/ui/camera_click.ogg \ - $(LOCAL_PATH)/effects/ogg/camera_focus.ogg:system/media/audio/ui/camera_focus.ogg \ - $(LOCAL_PATH)/effects/ogg/Dock.ogg:system/media/audio/ui/Dock.ogg \ - $(LOCAL_PATH)/effects/ogg/Effect_Tick_48k.ogg:system/media/audio/ui/Effect_Tick.ogg \ - $(LOCAL_PATH)/effects/ogg/KeypressDelete_120_48k.ogg:system/media/audio/ui/KeypressDelete.ogg \ - $(LOCAL_PATH)/effects/ogg/KeypressInvalid_120_48k.ogg:system/media/audio/ui/KeypressInvalid.ogg \ - $(LOCAL_PATH)/effects/ogg/KeypressReturn_120_48k.ogg:system/media/audio/ui/KeypressReturn.ogg \ - $(LOCAL_PATH)/effects/ogg/KeypressSpacebar_120_48k.ogg:system/media/audio/ui/KeypressSpacebar.ogg \ - $(LOCAL_PATH)/effects/ogg/KeypressStandard_120_48k.ogg:system/media/audio/ui/KeypressStandard.ogg \ - $(LOCAL_PATH)/effects/ogg/Lock.ogg:system/media/audio/ui/Lock.ogg \ - $(LOCAL_PATH)/effects/ogg/LowBattery.ogg:system/media/audio/ui/LowBattery.ogg \ - $(LOCAL_PATH)/effects/ogg/Trusted_48k.ogg:system/media/audio/ui/Trusted.ogg \ - $(LOCAL_PATH)/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.ogg \ - $(LOCAL_PATH)/effects/ogg/Unlock.ogg:system/media/audio/ui/Unlock.ogg \ - $(LOCAL_PATH)/effects/ogg/VideoRecord_48k.ogg:system/media/audio/ui/VideoRecord.ogg \ - $(LOCAL_PATH)/effects/ogg/VideoStop_48k.ogg:system/media/audio/ui/VideoStop.ogg \ - $(LOCAL_PATH)/effects/ogg/WirelessChargingStarted.ogg:system/media/audio/ui/WirelessChargingStarted.ogg \ - $(LOCAL_PATH)/F1_MissedCall.ogg:system/media/audio/notifications/F1_MissedCall.ogg \ - $(LOCAL_PATH)/F1_New_MMS.ogg:system/media/audio/notifications/F1_New_MMS.ogg \ - $(LOCAL_PATH)/F1_New_SMS.ogg:system/media/audio/notifications/F1_New_SMS.ogg \ - $(LOCAL_PATH)/notifications/Aldebaran.ogg:system/media/audio/notifications/Aldebaran.ogg \ - $(LOCAL_PATH)/notifications/Altair.ogg:system/media/audio/notifications/Altair.ogg \ - $(LOCAL_PATH)/notifications/Antares.ogg:system/media/audio/notifications/Antares.ogg \ - $(LOCAL_PATH)/notifications/arcturus.ogg:system/media/audio/notifications/arcturus.ogg \ - $(LOCAL_PATH)/notifications/Beat_Box_Android.ogg:system/media/audio/notifications/Beat_Box_Android.ogg \ - $(LOCAL_PATH)/notifications/Betelgeuse.ogg:system/media/audio/notifications/Betelgeuse.ogg \ - $(LOCAL_PATH)/notifications/Canopus.ogg:system/media/audio/notifications/Canopus.ogg \ - $(LOCAL_PATH)/notifications/Castor.ogg:system/media/audio/notifications/Castor.ogg \ - $(LOCAL_PATH)/notifications/Cricket.ogg:system/media/audio/notifications/Cricket.ogg \ - $(LOCAL_PATH)/notifications/Deneb.ogg:system/media/audio/notifications/Deneb.ogg \ - $(LOCAL_PATH)/notifications/Doink.ogg:system/media/audio/notifications/Doink.ogg \ - $(LOCAL_PATH)/notifications/Drip.ogg:system/media/audio/notifications/Drip.ogg \ - $(LOCAL_PATH)/notifications/Electra.ogg:system/media/audio/notifications/Electra.ogg \ - $(LOCAL_PATH)/notifications/Fomalhaut.ogg:system/media/audio/notifications/Fomalhaut.ogg \ - $(LOCAL_PATH)/notifications/Heaven.ogg:system/media/audio/notifications/Heaven.ogg \ - $(LOCAL_PATH)/notifications/Merope.ogg:system/media/audio/notifications/Merope.ogg \ - $(LOCAL_PATH)/notifications/moonbeam.ogg:system/media/audio/notifications/moonbeam.ogg \ - $(LOCAL_PATH)/notifications/ogg/Adara.ogg:system/media/audio/notifications/Adara.ogg \ - $(LOCAL_PATH)/notifications/ogg/Alya.ogg:system/media/audio/notifications/Alya.ogg \ - $(LOCAL_PATH)/notifications/ogg/Antimony.ogg:system/media/audio/notifications/Antimony.ogg \ - $(LOCAL_PATH)/notifications/ogg/Arcturus.ogg:system/media/audio/notifications/Arcturus.ogg \ - $(LOCAL_PATH)/notifications/ogg/Argon.ogg:system/media/audio/notifications/Argon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Bellatrix.ogg:system/media/audio/notifications/Bellatrix.ogg \ - $(LOCAL_PATH)/notifications/ogg/Beryllium.ogg:system/media/audio/notifications/Beryllium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Capella.ogg:system/media/audio/notifications/Capella.ogg \ - $(LOCAL_PATH)/notifications/ogg/CetiAlpha.ogg:system/media/audio/notifications/CetiAlpha.ogg \ - $(LOCAL_PATH)/notifications/ogg/Cobalt.ogg:system/media/audio/notifications/Cobalt.ogg \ - $(LOCAL_PATH)/notifications/ogg/Fluorine.ogg:system/media/audio/notifications/Fluorine.ogg \ - $(LOCAL_PATH)/notifications/ogg/Gallium.ogg:system/media/audio/notifications/Gallium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Helium.ogg:system/media/audio/notifications/Helium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Hojus.ogg:system/media/audio/notifications/Hojus.ogg \ - $(LOCAL_PATH)/notifications/ogg/Iridium.ogg:system/media/audio/notifications/Iridium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Krypton.ogg:system/media/audio/notifications/Krypton.ogg \ - $(LOCAL_PATH)/notifications/ogg/Lalande.ogg:system/media/audio/notifications/Lalande.ogg \ - $(LOCAL_PATH)/notifications/ogg/Mira.ogg:system/media/audio/notifications/Mira.ogg \ - $(LOCAL_PATH)/notifications/ogg/Palladium.ogg:system/media/audio/notifications/Palladium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Polaris.ogg:system/media/audio/notifications/Polaris.ogg \ - $(LOCAL_PATH)/notifications/ogg/Pollux.ogg:system/media/audio/notifications/Pollux.ogg \ - $(LOCAL_PATH)/notifications/ogg/Procyon.ogg:system/media/audio/notifications/Procyon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Proxima.ogg:system/media/audio/notifications/Proxima.ogg \ - $(LOCAL_PATH)/notifications/ogg/Radon.ogg:system/media/audio/notifications/Radon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Rubidium.ogg:system/media/audio/notifications/Rubidium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Selenium.ogg:system/media/audio/notifications/Selenium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Shaula.ogg:system/media/audio/notifications/Shaula.ogg \ - $(LOCAL_PATH)/notifications/ogg/Spica.ogg:system/media/audio/notifications/Spica.ogg \ - $(LOCAL_PATH)/notifications/ogg/Strontium.ogg:system/media/audio/notifications/Strontium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Syrma.ogg:system/media/audio/notifications/Syrma.ogg \ - $(LOCAL_PATH)/notifications/ogg/Talitha.ogg:system/media/audio/notifications/Talitha.ogg \ - $(LOCAL_PATH)/notifications/ogg/Tejat.ogg:system/media/audio/notifications/Tejat.ogg \ - $(LOCAL_PATH)/notifications/ogg/Thallium.ogg:system/media/audio/notifications/Thallium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Upsilon.ogg:system/media/audio/notifications/Upsilon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Vega.ogg:system/media/audio/notifications/Vega.ogg \ - $(LOCAL_PATH)/notifications/ogg/Xenon.ogg:system/media/audio/notifications/Xenon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Zirconium.ogg:system/media/audio/notifications/Zirconium.ogg \ - $(LOCAL_PATH)/notifications/pixiedust.ogg:system/media/audio/notifications/pixiedust.ogg \ - $(LOCAL_PATH)/notifications/pizzicato.ogg:system/media/audio/notifications/pizzicato.ogg \ - $(LOCAL_PATH)/notifications/Plastic_Pipe.ogg:system/media/audio/notifications/Plastic_Pipe.ogg \ - $(LOCAL_PATH)/notifications/regulus.ogg:system/media/audio/notifications/regulus.ogg \ - $(LOCAL_PATH)/notifications/sirius.ogg:system/media/audio/notifications/sirius.ogg \ - $(LOCAL_PATH)/notifications/Sirrah.ogg:system/media/audio/notifications/Sirrah.ogg \ - $(LOCAL_PATH)/notifications/SpaceSeed.ogg:system/media/audio/notifications/SpaceSeed.ogg \ - $(LOCAL_PATH)/notifications/TaDa.ogg:system/media/audio/notifications/TaDa.ogg \ - $(LOCAL_PATH)/notifications/Tinkerbell.ogg:system/media/audio/notifications/Tinkerbell.ogg \ - $(LOCAL_PATH)/notifications/tweeters.ogg:system/media/audio/notifications/tweeters.ogg \ - $(LOCAL_PATH)/notifications/vega.ogg:system/media/audio/notifications/vega.ogg diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 02a9ffa3039c..cbc5163244c1 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -436,8 +436,15 @@ void CanvasContext::draw() { swap.vsyncTime = mRenderThread.timeLord().latestVsync(); if (mNativeSurface.get()) { int durationUs; - mNativeSurface->query(NATIVE_WINDOW_LAST_DEQUEUE_DURATION, &durationUs); - swap.dequeueDuration = us2ns(durationUs); + nsecs_t dequeueStart = mNativeSurface->getLastDequeueStartTime(); + if (dequeueStart < mCurrentFrameInfo->get(FrameInfoIndex::Vsync)) { + // Ignoring dequeue duration as it happened prior to vsync + // and thus is not part of the frame. + swap.dequeueDuration = 0; + } else { + mNativeSurface->query(NATIVE_WINDOW_LAST_DEQUEUE_DURATION, &durationUs); + swap.dequeueDuration = us2ns(durationUs); + } mNativeSurface->query(NATIVE_WINDOW_LAST_QUEUE_DURATION, &durationUs); swap.queueDuration = us2ns(durationUs); } else { diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index a856e2787ae6..d2d4b5b213df 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -75,12 +75,12 @@ import java.util.Map; <h4>Compressed Buffers</h4> <p> Input buffers (for decoders) and output buffers (for encoders) contain compressed data according - to the {@linkplain MediaFormat#KEY_MIME format's type}. For video types this is a single + to the {@linkplain MediaFormat#KEY_MIME format's type}. For video types this is normally a single compressed video frame. For audio data this is normally a single access unit (an encoded audio segment typically containing a few milliseconds of audio as dictated by the format type), but this requirement is slightly relaxed in that a buffer may contain multiple encoded access units of audio. In either case, buffers do not start or end on arbitrary byte boundaries, but rather on - frame/access unit boundaries. + frame/access unit boundaries unless they are flagged with {@link #BUFFER_FLAG_PARTIAL_FRAME}. <h4>Raw Audio Buffers</h4> <p> diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index 44494a644178..87d8c64ead94 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -415,8 +415,6 @@ public class MediaRouter { } final ArrayList<MediaRouterClientState.RouteInfo> globalRoutes = mClientState != null ? mClientState.routes : null; - final String globallySelectedRouteId = mClientState != null ? - mClientState.globallySelectedRouteId : null; // Add or update routes. final int globalRouteCount = globalRoutes != null ? globalRoutes.size() : 0; @@ -431,25 +429,6 @@ public class MediaRouter { } } - // Synchronize state with the globally selected route. - if (globallySelectedRouteId != null) { - final RouteInfo route = findGlobalRoute(globallySelectedRouteId); - if (route == null) { - Log.w(TAG, "Could not find new globally selected route: " - + globallySelectedRouteId); - } else if (route != mSelectedRoute) { - if (DEBUG) { - Log.d(TAG, "Selecting new globally selected route: " + route); - } - selectRouteStatic(route.mSupportedTypes, route, false); - } - } else if (mSelectedRoute != null && mSelectedRoute.mGlobalRouteId != null) { - if (DEBUG) { - Log.d(TAG, "Unselecting previous globally selected route: " + mSelectedRoute); - } - selectDefaultRouteStatic(); - } - // Remove defunct routes. outer: for (int i = mRoutes.size(); i-- > 0; ) { final RouteInfo route = mRoutes.get(i); diff --git a/media/java/android/media/MediaRouterClientState.java b/media/java/android/media/MediaRouterClientState.java index 34e18f6c6094..7643924eabbb 100644 --- a/media/java/android/media/MediaRouterClientState.java +++ b/media/java/android/media/MediaRouterClientState.java @@ -34,20 +34,12 @@ public final class MediaRouterClientState implements Parcelable { */ public final ArrayList<RouteInfo> routes; - /** - * The id of the current globally selected route, or null if none. - * Globally selected routes override any other route selections that applications - * may have made. Used for remote displays. - */ - public String globallySelectedRouteId; - public MediaRouterClientState() { routes = new ArrayList<RouteInfo>(); } MediaRouterClientState(Parcel src) { routes = src.createTypedArrayList(RouteInfo.CREATOR); - globallySelectedRouteId = src.readString(); } public RouteInfo getRoute(String id) { @@ -69,13 +61,11 @@ public final class MediaRouterClientState implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeTypedList(routes); - dest.writeString(globallySelectedRouteId); } @Override public String toString() { - return "MediaRouterClientState{ globallySelectedRouteId=" - + globallySelectedRouteId + ", routes=" + routes.toString() + " }"; + return "MediaRouterClientState{ routes=" + routes.toString() + " }"; } public static final Parcelable.Creator<MediaRouterClientState> CREATOR = diff --git a/media/java/android/media/MediaSync.java b/media/java/android/media/MediaSync.java index 5522d362bc09..799f4bf4f866 100644 --- a/media/java/android/media/MediaSync.java +++ b/media/java/android/media/MediaSync.java @@ -35,7 +35,7 @@ import java.util.LinkedList; import java.util.List; /** - * MediaSync class can be used to synchronously playback audio and video streams. + * MediaSync class can be used to synchronously play audio and video streams. * It can be used to play audio-only or video-only stream, too. * * <p>MediaSync is generally used like this: diff --git a/packages/BackupRestoreConfirmation/res/values-bs/strings.xml b/packages/BackupRestoreConfirmation/res/values-bs/strings.xml index 53d77c378612..e4852ed16ddb 100644 --- a/packages/BackupRestoreConfirmation/res/values-bs/strings.xml +++ b/packages/BackupRestoreConfirmation/res/values-bs/strings.xml @@ -17,23 +17,23 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="backup_confirm_title" msgid="827563724209303345">"Napraviti potpunu rezervnu kopiju"</string> - <string name="restore_confirm_title" msgid="5469365809567486602">"Izvrši potpuno obnavljanje"</string> + <string name="restore_confirm_title" msgid="5469365809567486602">"Izvrši potpuno vraćanje"</string> <string name="backup_confirm_text" msgid="1878021282758896593">"Zatraženo je pravljenje potpune rezervne kopije svih podataka na povezani računar. Da li želite da dozvolite to?\n\nPrekinite radnju ukoliko to niste sami zatražili."</string> <string name="allow_backup_button_label" msgid="4217228747769644068">"Napravi sigurnosnu kopiju mojih podataka"</string> <string name="deny_backup_button_label" msgid="6009119115581097708">"Nemoj napraviti rezervnu kopiju"</string> <string name="restore_confirm_text" msgid="7499866728030461776">"Sa povezanog računara je upućen zahtjev za potpuno obnavljanje svih podataka. Želite li to dozvoliti?\n\nUkoliko niste uputili zahtjev za obnavljanje, prekinite radnju. Ovim će zamijeniti svi podaci koji su trenutno na uređaju!"</string> - <string name="allow_restore_button_label" msgid="3081286752277127827">"Obnovi moje podatke"</string> - <string name="deny_restore_button_label" msgid="1724367334453104378">"Prekinuti obnavljanje podataka"</string> + <string name="allow_restore_button_label" msgid="3081286752277127827">"Vrati moje podatke"</string> + <string name="deny_restore_button_label" msgid="1724367334453104378">"Ne vraćaj"</string> <string name="current_password_text" msgid="8268189555578298067">"Ispod unesite svoju trenutnu lozinku za sigurnosnu kopiju:"</string> <string name="device_encryption_restore_text" msgid="1570864916855208992">"Ispod unesite svoju lozinku za šifriranje uređaja."</string> <string name="device_encryption_backup_text" msgid="5866590762672844664">"Molimo vas unesite svoju lozinku za šifriranje uređaja ispod. Ona će se koristiti i za šifriranje arhive sigurnosnih kopija."</string> <string name="backup_enc_password_text" msgid="4981585714795233099">"Unesite lozinku za šifriranje potpune sigurnosne kopije podataka. Ukoliko ne unesete lozinku, primijenit će se vaša trenutna lozinka za sigurnosnu kopiju:"</string> <string name="backup_enc_password_optional" msgid="1350137345907579306">"Ukoliko želite šifrirati potpunu sigurnosnu kopiju podataka, unesite lozinku ispod:"</string> <string name="backup_enc_password_required" msgid="7889652203371654149">"Pošto je vaš uređaj šifriran, potrebno je šifrirati sigurnosnu kopiju. Unesite šifru ispod:"</string> - <string name="restore_enc_password_text" msgid="6140898525580710823">"Ukoliko su podaci za obnavljanje šifrirani, unesite lozinku ispod:"</string> + <string name="restore_enc_password_text" msgid="6140898525580710823">"Ukoliko su podaci za vraćanje šifrirani, unesite lozinku ispod:"</string> <string name="toast_backup_started" msgid="550354281452756121">"Pravljenje rezervne kopije..."</string> <string name="toast_backup_ended" msgid="3818080769548726424">"Pravljenje rezervne kopije završeno"</string> - <string name="toast_restore_started" msgid="7881679218971277385">"Počinje obnavljanje podataka..."</string> - <string name="toast_restore_ended" msgid="1764041639199696132">"Obnavljanje podatka završeno"</string> + <string name="toast_restore_started" msgid="7881679218971277385">"Pokretanje vraćanja..."</string> + <string name="toast_restore_ended" msgid="1764041639199696132">"Vraćanje završeno"</string> <string name="toast_timeout" msgid="5276598587087626877">"Isteklo je vrijeme za izvršenje radnje"</string> </resources> diff --git a/packages/CaptivePortalLogin/res/layout/activity_captive_portal_login.xml b/packages/CaptivePortalLogin/res/layout/activity_captive_portal_login.xml index 2f0a411448a5..232459338f48 100644 --- a/packages/CaptivePortalLogin/res/layout/activity_captive_portal_login.xml +++ b/packages/CaptivePortalLogin/res/layout/activity_captive_portal_login.xml @@ -4,31 +4,35 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.android.captiveportallogin.CaptivePortalLoginActivity" - tools:ignore="MergeRootFrame"> + tools:ignore="MergeRootFrame" > + <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > - <TextView - android:id="@+id/url_bar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="20sp" - android:singleLine="true" /> + <FrameLayout + android:layout_width="match_parent" + android:layout_height="4dp" > - <ProgressBar - android:id="@+id/progress_bar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - style="?android:attr/progressBarStyleHorizontal" /> + <!-- Eliminates ProgressBar padding by boxing it into a 4dp high container --> + <ProgressBar + android:id="@+id/progress_bar" + style="@android:style/Widget.Material.Light.ProgressBar.Horizontal" + android:indeterminate="false" + android:max="100" + android:progress="0" + android:layout_gravity="center" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + </FrameLayout> - <WebView - android:id="@+id/webview" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_alignParentBottom="false" - android:layout_alignParentRight="false" /> + <WebView + android:id="@+id/webview" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_alignParentBottom="false" + android:layout_alignParentRight="false" /> -</LinearLayout> + </LinearLayout> </FrameLayout> diff --git a/packages/CaptivePortalLogin/res/values/styles.xml b/packages/CaptivePortalLogin/res/values/styles.xml index 4a99638aec95..f6c233954b52 100644 --- a/packages/CaptivePortalLogin/res/values/styles.xml +++ b/packages/CaptivePortalLogin/res/values/styles.xml @@ -4,7 +4,7 @@ Base application theme, dependent on API level. This theme is replaced by AppBaseTheme from res/values-vXX/styles.xml on newer devices. --> - <style name="AppBaseTheme" parent="@android:style/Theme.Material.Settings"> + <style name="AppBaseTheme" parent="@android:style/Theme.DeviceDefault.Settings"> <!-- Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to @@ -15,8 +15,5 @@ <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> - <!-- Setting's theme's accent color makes ProgressBar useless, reset back. --> - <item name="android:colorAccent">@*android:color/material_deep_teal_500</item> </style> - </resources> diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index c9fba95bc828..401a7bca525c 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -37,6 +37,7 @@ import android.util.Log; import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.webkit.SslErrorHandler; import android.webkit.WebChromeClient; import android.webkit.WebSettings; @@ -97,8 +98,6 @@ public class CaptivePortalLoginActivity extends Activity { // setContentView initializes the WebView logic which in turn reads the system properties. setContentView(R.layout.activity_captive_portal_login); - getActionBar().setDisplayShowHomeEnabled(false); - // Exit app if Network disappears. final NetworkCapabilities networkCapabilities = mCm.getNetworkCapabilities(mNetwork); if (networkCapabilities == null) { @@ -117,9 +116,14 @@ public class CaptivePortalLoginActivity extends Activity { } mCm.registerNetworkCallback(builder.build(), mNetworkCallback); - final WebView myWebView = findViewById(R.id.webview); - myWebView.clearCache(true); - WebSettings webSettings = myWebView.getSettings(); + getActionBar().setDisplayShowHomeEnabled(false); + getActionBar().setElevation(0); // remove shadow + getActionBar().setTitle(getHeaderTitle()); + getActionBar().setSubtitle(""); + + final WebView webview = getWebview(); + webview.clearCache(true); + WebSettings webSettings = webview.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); webSettings.setUseWideViewPort(true); @@ -128,11 +132,11 @@ public class CaptivePortalLoginActivity extends Activity { webSettings.setBuiltInZoomControls(true); webSettings.setDisplayZoomControls(false); mWebViewClient = new MyWebViewClient(); - myWebView.setWebViewClient(mWebViewClient); - myWebView.setWebChromeClient(new MyWebChromeClient()); + webview.setWebViewClient(mWebViewClient); + webview.setWebChromeClient(new MyWebChromeClient()); // Start initial page load so WebView finishes loading proxy settings. // Actual load of mUrl is initiated by MyWebViewClient. - myWebView.loadData("", "text/html", null); + webview.loadData("", "text/html", null); } // Find WebView's proxy BroadcastReceiver and prompt it to read proxy system properties. @@ -251,10 +255,14 @@ public class CaptivePortalLoginActivity extends Activity { if (url == null) { url = mCm.getCaptivePortalServerUrl(); } + return makeURL(url); + } + + private static URL makeURL(String url) { try { return new URL(url); } catch (MalformedURLException e) { - Log.e(TAG, "Invalid captive portal URL " + url); + Log.e(TAG, "Invalid URL " + url); } return null; } @@ -331,15 +339,16 @@ public class CaptivePortalLoginActivity extends Activity { // For internally generated pages, leave URL bar listing prior URL as this is the URL // the page refers to. if (!url.startsWith(INTERNAL_ASSETS)) { - final TextView myUrlBar = findViewById(R.id.url_bar); - myUrlBar.setText(url); + getActionBar().setSubtitle(getHeaderSubtitle(url)); } + getProgressBar().setVisibility(View.VISIBLE); testForCaptivePortal(); } @Override public void onPageFinished(WebView view, String url) { mPagesLoaded++; + getProgressBar().setVisibility(View.INVISIBLE); if (mPagesLoaded == 1) { // Now that WebView has loaded at least one page we know it has read in the proxy // settings. Now prompt the WebView read the Network-specific proxy settings. @@ -412,8 +421,31 @@ public class CaptivePortalLoginActivity extends Activity { private class MyWebChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { - final ProgressBar myProgressBar = findViewById(R.id.progress_bar); - myProgressBar.setProgress(newProgress); + getProgressBar().setProgress(newProgress); + } + } + + private ProgressBar getProgressBar() { + return findViewById(R.id.progress_bar); + } + + private WebView getWebview() { + return findViewById(R.id.webview); + } + + private String getHeaderTitle() { + return getString(R.string.action_bar_label); + } + + private String getHeaderSubtitle(String urlString) { + URL url = makeURL(urlString); + if (url == null) { + return urlString; + } + final String https = "https"; + if (https.equals(url.getProtocol())) { + return https + "://" + url.getHost(); } + return url.getHost(); } } diff --git a/packages/SettingsLib/res/layout/preference_two_target.xml b/packages/SettingsLib/res/layout/preference_two_target.xml index 4c2583c890f4..69b7204a8678 100644 --- a/packages/SettingsLib/res/layout/preference_two_target.xml +++ b/packages/SettingsLib/res/layout/preference_two_target.xml @@ -31,18 +31,21 @@ android:layout_weight="1" android:background="?android:attr/selectableItemBackground" android:gravity="start|center_vertical" + android:clipToPadding="false" android:paddingStart="?android:attr/listPreferredItemPaddingStart"> <LinearLayout - android:id="@+id/icon_container" + android:id="@+id/icon_frame" + style="@style/preference_icon_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:minWidth="56dp" + android:gravity="start|center_vertical" android:orientation="horizontal" + android:clipToPadding="false" android:paddingEnd="12dp" android:paddingTop="4dp" android:paddingBottom="4dp"> - <com.android.internal.widget.PreferenceImageView + <android.support.v7.internal.widget.PreferenceImageView android:id="@android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/packages/SettingsLib/res/layout/usage_view.xml b/packages/SettingsLib/res/layout/usage_view.xml index 151d1ee3b899..da66814f49cb 100644 --- a/packages/SettingsLib/res/layout/usage_view.xml +++ b/packages/SettingsLib/res/layout/usage_view.xml @@ -76,7 +76,7 @@ android:id="@+id/bottom_label_space" android:layout_width="@dimen/usage_graph_labels_width" android:layout_height="wrap_content"/> - <LinearLayout + <com.android.settingslib.graph.BottomLabelLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" @@ -86,13 +86,14 @@ layout="@layout/usage_side_label" /> <Space - android:layout_width="0dp" + android:id="@+id/spacer" + android:layout_width="40dp" android:layout_height="wrap_content" android:layout_weight="1" /> <include android:id="@+id/label_end" layout="@layout/usage_side_label" /> - </LinearLayout> + </com.android.settingslib.graph.BottomLabelLayout> </LinearLayout> </LinearLayout> diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index a05ad8a0c566..6b4cf8c4434b 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Agtergrondproses-limiet"</string> <string name="show_all_anrs" msgid="28462979638729082">"Wys alle ANRe"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Wys Program reageer nie-dialoog vir agtergrond programme"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Wys kennisgewingkanaalwaarskuwings"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Wys waarskuwing op skerm wanneer \'n program \'n kennisgewing sonder \'n geldige kanaal plaas"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Programme verplig ekstern toegelaat"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Maak dat enige program in eksterne berging geskryf kan word, ongeag manifeswaardes"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Verplig verstelbare groottes vir aktiwiteite"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Hierdie kenmerk is eksperimenteel en kan werkverrigting beïnvloed."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Geneutraliseer deur <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Omtrent <xliff:g id="TIME">%1$s</xliff:g> oor"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Ongeveer <xliff:g id="TIME">%1$s</xliff:g> oor gegrond op jou gebruik"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> oor tot vol gelaai"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> oor"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> oor gegrond op jou gebruik"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – omtrent <xliff:g id="TIME">%2$s</xliff:g> oor"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – ongeveer <xliff:g id="TIME">%2$s</xliff:g> oor gegrond op jou gebruik"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> oor"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> tot vol gelaai"</string> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 01cff1c771f2..148aa5c4b449 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"የዳራ አሂድ ወሰን"</string> <string name="show_all_anrs" msgid="28462979638729082">"ሁሉንም ANRs አሳይ"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"ለዳራ መተግበሪያዎች ምላሽ የማይሰጥ መገናኛ ትግበራ አሳይ"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"የማሳወቂያ ሰርጥ ማስጠንቀቂያዎችን አሳይ"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"አንድ መተግበሪያ የሚሰራ ሰርጥ ሳይኖረው ማሳወቂያ ሲለጥፍ በማያ ገጽ-ላይ ማስጠንቀቂያን ያሳያል"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"በውጫዊ ላይ ሃይል ይፈቀዳል"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"የዝርዝር ሰነዶች እሴቶች ግምት ውስጥ ሳያስገባ ማንኛውም መተግበሪያ ወደ ውጫዊ ማከማቻው ለመጻፍ ብቁ ያደርጋል"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"እንቅስቃሴዎች ዳግመኛ እንዲመጣጠኑ አስገድድ"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ይህ ባህሪ የሙከራ ነውና አፈጻጸም ላይ ተጽዕኖ ሊኖረው ይችላል።"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"በ<xliff:g id="TITLE">%1$s</xliff:g> ተሽሯል"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"<xliff:g id="TIME">%1$s</xliff:g> አካባቢ ቀርቷል"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"በእርስዎ አጠቃቀም ላይ በመመስረት <xliff:g id="TIME">%1$s</xliff:g> ገደማ ቀርቷል"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"ሙሉ ኃይል እስኪሞላ ድረስ <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> ቀርቷል"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"በእርስዎ አጠቃቀም ላይ በመመስረት <xliff:g id="TIME">%1$s</xliff:g> ቀርቷል"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> አካባቢ ይቀራል"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - በእርስዎ አጠቃቀም ላይ በመመስረት <xliff:g id="TIME">%2$s</xliff:g> ገደማ ቀርቷል"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ይቀራል"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - ሙሉ ለሙሉ እስኪሞላ ድረስ <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index d8cf20ce3b96..6d97fa1c5bc7 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"حد العمليات بالخلفية"</string> <string name="show_all_anrs" msgid="28462979638729082">"عرض جميع رسائل ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"عرض مربع الحوار \"التطبيق لا يستجيب\" مع تطبيقات الخلفية"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"عرض تحذيرات قناة الإشعار"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"لعرض تحذير على الشاشة عند نشر تطبيق ما لإشعار بدون قناة صالحة"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"فرض السماح للتطبيقات على الخارجي"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"تأهيل أي تطبيق بحيث تتم كتابته على وحدة تخزين خارجية، بغض النظر عن قيم البيان"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"فرض إمكانية تغيير على الأنشطة"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"هذه الميزة تجريبية وقد تؤثر في الأداء."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"تم الاستبدال بـ <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"يتبقى حوالي <xliff:g id="TIME">%1$s</xliff:g> لإتمام شحن البطارية"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"يتبقى <xliff:g id="TIME">%1$s</xliff:g> تقريبًا بناءً على استخدامك"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"يتبقى <xliff:g id="TIME">%1$s</xliff:g> لشحن البطارية بالكامل"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"يتبقى <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"يتبقى <xliff:g id="TIME">%1$s</xliff:g> بناءً على استخدامك"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - يتبقى <xliff:g id="TIME">%2$s</xliff:g> تقريبًا"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - يتبقى <xliff:g id="TIME">%2$s</xliff:g> تقريبًا بناءً على استخدامك"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - يتبقى <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> حتى يكتمل الشحن"</string> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 179b62b006bb..2b282a7719ca 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Fon prosesi limiti"</string> <string name="show_all_anrs" msgid="28462979638729082">"Bütün ANRları göstər"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Arxa tətbiqlər dialoquna cavab verməyən tətbiqi göstər"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Xəbərdarlıqları göstərin"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Bildiriş paylaşıldıqda xəbərdarlıq göstərir"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Tətbiqlərə xaricdən məcburi icazə"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Seçilmiş hər hansı tətbiqi bəyannamə dəyərlərindən aslı olmayaraq xarici yaddaşa yazılabilən edir."</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Ölçü dəyişdirmək üçün məcburi fəaliyyətlər"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Bu funksiya eksperimentaldır və performansa təsir edə bilər."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> tərəfindən qəbul edilmir"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Təxminən <xliff:g id="TIME">%1$s</xliff:g> qalıb"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"İstifadəyə əsasən təxminən <xliff:g id="TIME">%1$s</xliff:g> qalıb"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Tam enerji yığmağına <xliff:g id="TIME">%1$s</xliff:g> qalıb"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> qalıb"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"İstifadəyə əsasən <xliff:g id="TIME">%1$s</xliff:g> qalıb"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - təxminən <xliff:g id="TIME">%2$s</xliff:g> qalıb"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - istifadəyə əsasən təxminən <xliff:g id="TIME">%2$s</xliff:g> qalıb"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> qalıb"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> tam enerji yığana kimi"</string> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index fe1bd7104570..dd655870e961 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Ograničenje pozadinskih procesa"</string> <string name="show_all_anrs" msgid="28462979638729082">"Prikaži sve ANR-ove"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Prikaži dijalog Aplikacija ne reaguje za aplikacije u pozadini"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Prikazuj upozorenja zbog kanala za obaveštenja"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Prikazuje upozorenje na ekranu kada aplikacija postavi obaveštenje bez važećeg kanala"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Prinudno dozvoli aplikacije u spoljnoj"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Omogućava upisivanje svih aplikacija u spoljnu memoriju, bez obzira na vrednosti manifesta"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Prinudno omogući promenu veličine aktivnosti"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ova funkcija je eksperimentalna i može da utiče na kvalitet rada."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Zamenjuje ga <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Još oko <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Na osnovu potrošnje imate još otprilike <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> do potpunog punjenja"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Preostalo vreme: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Na osnovu potrošnje imate još <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – ostalo je oko <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – na osnovu potrošnje imate još otprilike <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"Preostalo je <xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do potpunog punjenja"</string> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 75fb6d5dd0bc..67a7b24a9627 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Ліміт фонавага працэсу"</string> <string name="show_all_anrs" msgid="28462979638729082">"Паказаць усе ANRS"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Паказаць дыялогавае акно \"Праграма не адказвае\" для фонавых прыкладанняў"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Паказваць папярэджанні канала апавяшчэннаў"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Паказвае папярэджанне на экране, калі праграма публікуе апавяшчэнне без сапраўднага канала"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Прымусова дазволіць праграмы на вонкавым сховішчы"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Робіць любую праграму даступнай для запісу на вонкавае сховішча, незалежна ад значэнняў маніфеста"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Зрабіць вокны дзеянняў даступнымі для змены памеру"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Гэта функцыя з\'яўляецца эксперыментальнай і можа паўплываць на прадукцыйнасць."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Перавызначаны <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Засталося каля <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Засталося каля <xliff:g id="TIME">%1$s</xliff:g> на аснове вашага выкарыстання"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Да поўнай зарадкі засталося <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Засталося <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Засталося <xliff:g id="TIME">%1$s</xliff:g> на аснове вашага выкарыстання"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – засталося каля <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – засталося каля <xliff:g id="TIME">%2$s</xliff:g> на аснове вашага выкарыстання"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – засталося <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> да поўнай зарадкі"</string> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 16533caf8cb8..3dedfe637c3b 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Лимит за фонови процеси"</string> <string name="show_all_anrs" msgid="28462979638729082">"Всички нереагиращи прил."</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Диалог. прозорец „НП“ за приложения на заден план"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Предупрежд. за канала за известия"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Показва се предупреждение, когато приложение публикува известие без валиден канал"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Външно хран.: Принуд. разрешаване на приложенията"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Прави всички приложения да отговарят на условията да бъдат записвани във външното хранилище независимо от стойностите в манифеста"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Възможност за преоразмеряване на активностите"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Тази функция е експериментална и може да се отрази на ефективността."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Заменено от „<xliff:g id="TITLE">%1$s</xliff:g>“"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Оставащо време: около <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Още около <xliff:g id="TIME">%1$s</xliff:g> въз основа на използването"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Оставащо време до пълно зареждане: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Оставащо време: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Още <xliff:g id="TIME">%1$s</xliff:g> въз основа на използването"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – около <xliff:g id="TIME">%2$s</xliff:g> оставащо време"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – още около <xliff:g id="TIME">%2$s</xliff:g> въз основа на използването"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – оставащо време: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до пълно зареждане"</string> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 6c5a0f00a96d..8e1640add1b4 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"পশ্চাদপট প্রক্রিয়ার সীমা"</string> <string name="show_all_anrs" msgid="28462979638729082">"সব ANR দেখান"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"পশ্চাদপটের অ্যাপ্লিকেশানগুলির জন্য অ্যাপ্লিকেশান কোনো প্রতিক্রিয়া দিচ্ছে না এমন কথোপকথন দেখান"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"বিজ্ঞপ্তির সতর্কতা দেখুন"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"অ্যাপ সঠিক চ্যানেল ছাড়া বিজ্ঞপ্তি দেখালে সতর্ক করে"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"বহিরাগততে বলপূর্বক মঞ্জুরি"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ম্যানিফেস্ট মানগুলি নির্বিশেষে যেকোনো অ্যাপ্লিকেশানকে বাহ্যিক সঞ্চয়স্থানে লেখার উপযুক্ত বানায়"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"আকার পরিবর্তনযোগ্য করার জন্য ক্রিয়াকলাপগুলিকে জোর করুন"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"এই বৈশিষ্ট্যটি পরীক্ষামূলক এবং এটি কার্য-সম্পাদনা প্রভাবিত করতে পারে।"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> এর দ্বারা ওভাররাইড করা হয়েছে"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"প্রায় <xliff:g id="TIME">%1$s</xliff:g> বাকি"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"বর্তমান ব্যাটারি ব্যবহার অনুযায়ী আর <xliff:g id="TIME">%1$s</xliff:g> বাকি"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"সম্পূর্ণ চার্জ হতে <xliff:g id="TIME">%1$s</xliff:g> বাকি"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> বাকী আছে"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"বর্তমান ব্যাটারি ব্যবহার অনুযায়ী আর <xliff:g id="TIME">%1$s</xliff:g> বাকি"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - প্রায় <xliff:g id="TIME">%2$s</xliff:g> বাকি আছে"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - বর্তমান ব্যাটারি ব্যবহার অনুযায়ী আর <xliff:g id="TIME">%2$s</xliff:g> বাকি"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> বাকী আছে"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - সম্পূর্ণ চার্জ হতে <xliff:g id="TIME">%2$s</xliff:g> লাগবে"</string> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 9922e235f0b7..eec0b610a5bb 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Ograničenje procesa u pozadini"</string> <string name="show_all_anrs" msgid="28462979638729082">"Prikaži sve ANR-ove"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Prik. dijalog Aplikacija ne reagira za apl. u poz."</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Prikaz upozorenja na obavještenju o kanalu"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Prikaz upozorenja ekranu kada aplikacija pošalje obavještenje bez važećeg kanala."</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Nametni aplikacije na vanjskoj pohrani"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Omogućava da svaka aplikacija bude pogodna za upisivanje na vanjsku pohranu, bez obzira na prikazane vrijednosti"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Nametni aktivnostima mijenjanje veličina"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ova funkcija je eksperimentalna i može uticati na performanse."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Zamjenjuje <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Preostalo je otprilike još <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Preostalo je još oko <xliff:g id="TIME">%1$s</xliff:g>, na osnovu vašeg korištenja"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Još <xliff:g id="TIME">%1$s</xliff:g> do potpune napunjenosti"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Imate još <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Preostalo je još <xliff:g id="TIME">%1$s</xliff:g>, na osnovu vašeg korištenja"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - imate još <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - preostalo je još oko <xliff:g id="TIME">%2$s</xliff:g>, na osnovu vašeg korištenja"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - imate još <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> do potpune napunjenosti"</string> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index ff9af7e82849..5802a7281405 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Límita processos en segon pla"</string> <string name="show_all_anrs" msgid="28462979638729082">"Tots els errors sense resposta"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Informa que una aplicació en segon pla no respon"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Avisos del canal de notificacions"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Mostra un avís a la pantalla quan una app publica una notificació sense canal vàlid"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Força permís d\'aplicacions a l\'emmagatzem. extern"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Permet que qualsevol aplicació es pugui escriure en un dispositiu d’emmagatzematge extern, independentment dels valors definits"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Força l\'ajust de la mida de les activitats"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Aquesta funció és experimental i pot afectar el rendiment."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"S\'ha substituït per <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Temps restant aproximat: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Temps restant aproximat segons l\'ús que en fas: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> per completar la càrrega"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Temps restant: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Temps restant segons l\'ús que en fas: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> aproximadament per esgotar la bateria"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g>; temps restant aproximat segons l\'ús que en fas: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g>; temps restant: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> per completar la càrrega"</string> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 2ccbbcf71133..231dc07c2e4e 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Omezení procesů na pozadí"</string> <string name="show_all_anrs" msgid="28462979638729082">"Zobrazit všechny ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Zobrazovat dialog „Aplikace neodpovídá“ pro aplikace na pozadí"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Zobrazovat upozornění ohledně kanálu oznámení"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Když aplikace odešle oznámení bez platného kanálu, na obrazovce se zobrazí upozornění"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Vynutit povolení aplikací na externím úložišti"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Každou aplikaci bude možné zapsat do externího úložiště, bez ohledu na hodnoty manifestu"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Vynutit možnost změny velikosti aktivit"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Funkce je experimentální a může mít vliv na výkon."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Přepsáno nastavením <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Zbývá asi <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Při vašem obvyklém využití zbývá asi <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Plně se nabije za <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Zbývající čas: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Při vašem obvyklém využití zbývá <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – zbývá přibližně <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – při vašem obvyklém využití zbývá asi <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – zbývá <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – plně se nabije za <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index 9a0d3c725a9c..1f6c27cd7a63 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Grænse for baggrundsprocesser"</string> <string name="show_all_anrs" msgid="28462979638729082">"Vis alle \"Appen svarer ikke\""</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Vis \"Appen svarer ikke\" for baggrundsapps"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Vis advarsler om underretningskanal"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Viser en advarsel, når en app sender en underretning uden en gyldig kanal"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Gennemtving tilladelse til eksternt lager"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Gør det muligt at overføre enhver app til et eksternt lager uafhængigt af manifestværdier"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Tving aktiviteter til at kunne tilpasses"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Denne funktion er eksperimentel og kan påvirke ydeevnen."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Tilsidesat af <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Ca. <xliff:g id="TIME">%1$s</xliff:g> tilbage"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Der er ca. <xliff:g id="TIME">%1$s</xliff:g> tilbage, alt efter hvordan du bruger enheden"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> til det er fuldt opladet"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> tilbage"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Der er <xliff:g id="TIME">%1$s</xliff:g> tilbage, alt efter hvordan du bruger enheden"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – ca. <xliff:g id="TIME">%2$s</xliff:g> tilbage"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – der er ca. <xliff:g id="TIME">%2$s</xliff:g> tilbage, alt efter hvordan du bruger enheden"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> tilbage"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> til det er fuldt opladet"</string> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index 8ee25a4e2d62..e717a2d2ba39 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Hintergrundprozesslimit"</string> <string name="show_all_anrs" msgid="28462979638729082">"Alle ANRS anzeigen"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Dialogfeld \"App antwortet nicht\" für Hintergrund-Apps anzeigen"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Warnungen für Benachrichtigungskanäle einblenden"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Blendet Warnungen auf dem Display ein, wenn eine App eine Benachrichtigung ohne gültigen Kanal sendet"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Externe Speichernutzung von Apps erlauben"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Ermöglicht es jeder qualifizierten App, Daten auf externen Speicher zu schreiben, unabhängig von den Manifestwerten"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Anpassen der Größe von Aktivitäten erzwingen"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Hierbei handelt es sich um eine experimentelle Funktion, die sich auf die Leistung auswirken kann."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Außer Kraft gesetzt von \"<xliff:g id="TITLE">%1$s</xliff:g>\""</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Ca. <xliff:g id="TIME">%1$s</xliff:g> übrig"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Noch ca. <xliff:g id="TIME">%1$s</xliff:g>, basierend auf deiner Nutzung"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> bis zur vollständigen Aufladung"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Noch <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Noch <xliff:g id="TIME">%1$s</xliff:g>, basierend auf deiner Nutzung"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – ungefähr noch <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – noch ca. <xliff:g id="TIME">%2$s</xliff:g>, basierend auf deiner Nutzung"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – noch <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> bis vollständig geladen"</string> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 7095f2b98b23..3ac2d867abb1 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Όριο διεργασ. παρασκηνίου"</string> <string name="show_all_anrs" msgid="28462979638729082">"Εμφάνιση όλων των ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Εμφ.του παραθ. \"Η εφαρμ.δεν αποκρ.\" για εφ.παρασκ."</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Εμφάνιση προειδοπ. καναλιού ειδοπ."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Εμφανίζει προειδοποίηση όταν μια εφαρμογή δημοσιεύει ειδοποίηση χωρίς έγκυρο κανάλι"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Να επιτρέπονται υποχρεωτικά εφαρμογές σε εξωτ.συσ."</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Κάνει κάθε εφαρμογή κατάλληλη για εγγραφή σε εξωτερικό αποθηκευτικό χώρο, ανεξάρτητα από τις τιμές του μανιφέστου"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Αναγκαστική δυνατότητα αλλαγής μεγέθους δραστηριοτήτων"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Αυτή η λειτουργία είναι πειραματική και ενδεχομένως να επηρεάσει τις επιδόσεις."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Αντικαταστάθηκε από <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Απομένουν περίπου <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Απομένει/ουν περίπου <xliff:g id="TIME">%1$s</xliff:g> με βάση τη χρήση σας"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Απομένουν <xliff:g id="TIME">%1$s</xliff:g> έως την πλήρη φόρτιση"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Απομένει/ουν <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Απομένει/ουν <xliff:g id="TIME">%1$s</xliff:g> με βάση τη χρήση σας"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - απομένουν περίπου <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - Απομένει/ουν περίπου <xliff:g id="TIME">%2$s</xliff:g> με βάση τη χρήση σας"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - απομένει/ουν <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> για πλήρη φόρτιση"</string> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 96c9e55a861b..644781f4f5cc 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Background process limit"</string> <string name="show_all_anrs" msgid="28462979638729082">"Show all ANRs"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Show App Not Responding dialogue for background apps"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Show notification channel warnings"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Displays on-screen warning when an app posts a notification without a valid channel"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Force activities to be re-sizable"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"This feature is experimental and may affect performance."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"About <xliff:g id="TIME">%1$s</xliff:g> left"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"About <xliff:g id="TIME">%1$s</xliff:g> left based on your usage"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> left until fully charged"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> left"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> left based on your usage"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – about <xliff:g id="TIME">%2$s</xliff:g> left"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - about <xliff:g id="TIME">%2$s</xliff:g> left based on your usage"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> left"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> until fully charged"</string> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 96c9e55a861b..644781f4f5cc 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Background process limit"</string> <string name="show_all_anrs" msgid="28462979638729082">"Show all ANRs"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Show App Not Responding dialogue for background apps"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Show notification channel warnings"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Displays on-screen warning when an app posts a notification without a valid channel"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Force activities to be re-sizable"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"This feature is experimental and may affect performance."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"About <xliff:g id="TIME">%1$s</xliff:g> left"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"About <xliff:g id="TIME">%1$s</xliff:g> left based on your usage"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> left until fully charged"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> left"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> left based on your usage"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – about <xliff:g id="TIME">%2$s</xliff:g> left"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - about <xliff:g id="TIME">%2$s</xliff:g> left based on your usage"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> left"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> until fully charged"</string> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 96c9e55a861b..644781f4f5cc 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Background process limit"</string> <string name="show_all_anrs" msgid="28462979638729082">"Show all ANRs"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Show App Not Responding dialogue for background apps"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Show notification channel warnings"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Displays on-screen warning when an app posts a notification without a valid channel"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Force activities to be re-sizable"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"This feature is experimental and may affect performance."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"About <xliff:g id="TIME">%1$s</xliff:g> left"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"About <xliff:g id="TIME">%1$s</xliff:g> left based on your usage"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> left until fully charged"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> left"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> left based on your usage"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – about <xliff:g id="TIME">%2$s</xliff:g> left"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - about <xliff:g id="TIME">%2$s</xliff:g> left based on your usage"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> left"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> until fully charged"</string> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index fc6858436daf..86078840c373 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Límite de procesos en segundo plano"</string> <string name="show_all_anrs" msgid="28462979638729082">"Errores sin respuesta"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Mostrar diálogo cuando las aplic. en 2do plano no responden"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Alertas de notificaciones"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"App que publica notificación sin canal válido"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forzar permisos en almacenamiento externo"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Cualquier app puede escribirse en un almacenamiento externo, sin importar los valores del manifiesto"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forzar actividades para que cambien de tamaño"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Esta función es experimental y puede afectar el rendimiento."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Reemplazado por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Tiempo restante aproximado: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Aproximadamente <xliff:g id="TIME">%1$s</xliff:g> restantes en función del uso"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> para completar la carga"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Tiempo restante: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> restantes en función del uso"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> (tiempo restante: <xliff:g id="TIME">%2$s</xliff:g>)"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> (aproximadamente <xliff:g id="TIME">%2$s</xliff:g> restantes en función del uso)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tiempo restante: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g> para completar la carga)"</string> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 351efbf66def..9b094efdfcd4 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Límitar procesos en segundo plano"</string> <string name="show_all_anrs" msgid="28462979638729082">"Errores sin respuesta"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Informar de que una aplicación en segundo plano no responde"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Ver advertencias canal notificaciones"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Muestra advertencia en pantalla cuando app publica notificación sin canal válido"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forzar permiso de aplicaciones de forma externa"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Hace que cualquier aplicación se pueda escribir en un dispositivo de almacenamiento externo, independientemente de los valores definidos"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forzar el ajuste de tamaño de las actividades"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Esta función es experimental y puede afectar al rendimiento."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Anulado por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Tiempo restante aproximado: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Tiempo restante aproximado según tu uso: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Tiempo restante hasta carga completa: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Tiempo restante: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Tiempo restante aproximado según tu uso: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - tiempo aproximado restante: <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> (tiempo restante aproximado según tu uso: <xliff:g id="TIME">%2$s</xliff:g>)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tiempo restante: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> para completar la carga"</string> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 98baf514cd00..61a018d791ae 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Taustaprotsesside piir"</string> <string name="show_all_anrs" msgid="28462979638729082">"Näita kõiki ANR-e"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Kuva taustarakendustele dial. Rakendus ei reageeri"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Kuva märguandekan. hoiat."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Esitab ekraanil hoiatuse, kui rakendus postitab kehtiva kanalita märguande"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Luba rakendused välises salvestusruumis"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Lubab mis tahes rakendusi kirjutada välisesse salvestusruumi manifesti väärtustest olenemata"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Muuda tegevuste suurused muudetavaks"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"See funktsioon on katseline ja võib mõjutada toimivust."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Alistas <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Umbes <xliff:g id="TIME">%1$s</xliff:g> on jäänud"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Teie kasutuse alusel on jäänud ligikaudu <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> täislaadimiseni"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> on jäänud"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Teie kasutuse alusel on jäänud <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – umbes <xliff:g id="TIME">%2$s</xliff:g> on jäänud"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – teie kasutuse alusel on jäänud ligikaudu <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> on jäänud"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> täislaadimiseni"</string> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 5aa064faca33..5ff1d6b74c48 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Atzeko planoko prozesuen muga"</string> <string name="show_all_anrs" msgid="28462979638729082">"Erakutsi ANR guztiak"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"\"Erantzunik ez\" mezua atz. planoko aplikazioetarako"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Erakutsi jakinarazpenen kanaleko abisuak"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Bistaratu abisuak aplikazioek baliozko kanalik gabeko jakinarazpenak argitaratzean"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Behartu aplikazioak onartzea kanpoko biltegian"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Aplikazioek kanpoko memorian idatz dezakete, manifestuaren balioak kontuan izan gabe"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Behartu jardueren tamaina doitu ahal izatea"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Eginbidea esperimentala da eta eragina izan dezake funtzionamenduan."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> hobespena gainjarri zaio"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"<xliff:g id="TIME">%1$s</xliff:g> inguru gelditzen dira"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"<xliff:g id="TIME">%1$s</xliff:g> inguru gelditzen dira, erabileraren arabera"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> falta dira guztiz kargatu arte"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> guztiz kargatu arte"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> gelditzen dira, erabileraren arabera"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> inguru gelditzen dira"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> inguru gelditzen dira, erabileraren arabera"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> guztiz kargatu arte"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> guztiz kargatu arte"</string> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 8491679895a9..28bf3c0d96d8 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"محدودیت پردازش در پسزمینه"</string> <string name="show_all_anrs" msgid="28462979638729082">"نمایش تمام ANRها"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"نمایش گفتگوی \"برنامه پاسخ نمیدهد\" برای برنامههای پسزمینه"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"نمایش هشدارهای کانال اعلان"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"هنگامی که برنامهای بدون وجود کانالی معتبر، اعلانی پست میکند، هشدار روی صفحهای نمایش میدهد"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"اجازه اجباری به برنامههای دستگاه ذخیره خارجی"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"بدون توجه به مقادیر مانیفست، هر برنامهای را برای نوشتن در حافظه خارجی واجد شرایط میکند"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"اجبار فعالیتها به قابل تغییر اندازه بودن"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"این قابلیت آزمایشی است و ممکن است عملکرد را تحت تأثیر قرار دهد."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"توسط <xliff:g id="TITLE">%1$s</xliff:g> لغو شد"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"حدود <xliff:g id="TIME">%1$s</xliff:g> باقی مانده است"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"براساس میزان مصرف شما، <xliff:g id="TIME">%1$s</xliff:g> باقیمانده است"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> تا شارژ شدن کامل باقی مانده است"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> باقی مانده"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"براساس میزان مصرف شما، <xliff:g id="TIME">%1$s</xliff:g> باقیمانده است"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - تقریباً <xliff:g id="TIME">%2$s</xliff:g> باقی مانده است"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - براساس میزان مصرف شما، <xliff:g id="TIME">%2$s</xliff:g> باقیمانده است"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> باقی مانده"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> مانده تا شارژ کامل"</string> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index dcd9c3fe3537..d56b4a48e462 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Taustaprosessi"</string> <string name="show_all_anrs" msgid="28462979638729082">"Näytä kaikki ANR:t"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Näytä Sovellus ei vastaa -ikkuna taustasovell."</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Näytä ilmoituskanavan varoitukset"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Näyttää varoituksen, kun sovellus julkaisee ilmoituksen ilman kelvollista kanavaa."</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Salli aina ulkoinen tallennus"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Mahdollistaa sovelluksen tietojen tallentamisen ulkoiseen tallennustilaan luetteloarvoista riippumatta."</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Pakota kaikki toiminnot hyväksymään koon muutos"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Tämä ominaisuus on kokeellinen ja voi vaikuttaa suorituskykyyn."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Tämän ohittaa <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Noin <xliff:g id="TIME">%1$s</xliff:g> jäljellä"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Noin <xliff:g id="TIME">%1$s</xliff:g> jäljellä käytön perusteella"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> kunnes täynnä"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> jäljellä"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> jäljellä käytön perusteella"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – noin <xliff:g id="TIME">%2$s</xliff:g> jäljellä"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – noin <xliff:g id="TIME">%2$s</xliff:g> jäljellä käytön perusteella"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> jäljellä"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> täyteen lataukseen"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 8037c75851db..a9e81df3de61 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limite processus arr.-plan"</string> <string name="show_all_anrs" msgid="28462979638729082">"Afficher tous les messages «L\'application ne répond pas»"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Afficher « L\'application ne répond plus » pour applis en arrière-plan"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Affich. avertiss. canal notification"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Afficher avertiss. à l\'écran quand une app présente une notific. sans canal valide"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forcer l\'autor. d\'applis sur stockage externe"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Rend possible l\'enregistrement de toute application sur un espace de stockage externe, indépendamment des valeurs du fichier manifeste"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forcer les activités à être redimensionnables"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Cette fonctionnalité est expérimentale et peut affecter les performances."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Remplacé par <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Il reste environ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Il reste environ <xliff:g id="TIME">%1$s</xliff:g> en fonction de votre usage"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> jusqu\'à la charge complète"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Temps restant : <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Il reste <xliff:g id="TIME">%1$s</xliff:g> en fonction de votre usage"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> : il reste environ <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> : il reste environ <xliff:g id="TIME">%2$s</xliff:g> en fonction de votre usage"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – Temps restant : <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> : <xliff:g id="TIME">%2$s</xliff:g> jusqu\'à la charge complète"</string> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 745b2f4e9e7f..4de9ffc02134 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limite processus arr.-plan"</string> <string name="show_all_anrs" msgid="28462979638729082">"Afficher tous les messages ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Afficher \"L\'application ne répond plus\" pour applis en arrière-plan"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Voir avertissements liés aux canaux notification"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Affiche avertissement lorsqu\'une application publie notification sans canal valide"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forcer disponibilité stockage externe pour applis"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Rend possible l\'enregistrement de toute application sur un espace de stockage externe, indépendamment des valeurs du fichier manifeste."</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forcer possibilité de redimensionner les activités"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Cette fonctionnalité est expérimentale et peut affecter les performances."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Remplacé par <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Il reste environ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Temps restant en fonction de votre utilisation : environ <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> avant charge complète"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Temps restant : <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Temps restant en fonction de votre utilisation : <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - encore environ <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – Temps restant en fonction de votre utilisation : environ <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – Temps restant : <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> jusqu\'à la charge complète"</string> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 9d173af30727..9998212daf70 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Límite proceso 2º plano"</string> <string name="show_all_anrs" msgid="28462979638729082">"Mostrar todos os ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Informa que aplicación segundo plano non responde"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Mostrar avisos de notificacións"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Mostra avisos cando unha aplicación publica notificacións sen unha canle válida"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forzar permiso de aplicacións de forma externa"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Permite que calquera aplicación apta se poida escribir nun almacenamento externo, independentemente dos valores expresados"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forzar o axuste do tamaño das actividades"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Esta función é experimental e pode afectar ao rendemento."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Anulado por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Tempo que queda aproximadamente: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Tempo restante aproximado en función do uso: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Tempo que queda ata cargar de todo: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Tempo restante: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Tempo restante en función do uso: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> (tempo restante aproximado: <xliff:g id="TIME">%2$s</xliff:g>)"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tempo restante aproximado en función do uso: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> (tempo restante: <xliff:g id="TIME">%2$s</xliff:g>)"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ata completar a carga"</string> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 449869a2afd3..ff45b336afa5 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"પૃષ્ઠભૂમિ પ્રક્રિયા સીમા"</string> <string name="show_all_anrs" msgid="28462979638729082">"બધા ANR બતાવો"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"પૃષ્ઠભૂમિ ઍપ્લિકેશનો માટે ઍપ્લિકેશન પ્રતિસાદ આપતી નથી સંવાદ બતાવો"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"સૂચના ચૅનલની ચેતવણી બતાવો"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ઍપ્લિકેશન માન્ય ચૅનલ વિના સૂચના પોસ્ટ કરે તો સ્ક્રીન પર ચેતવણી દેખાય છે"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"બાહ્ય પર એપ્લિકેશનોને મંજૂરી આપવાની ફરજ પાડો"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"મેનિફેસ્ટ મૂલ્યોને ધ્યાનમાં લીધા સિવાય, કોઈપણ ઍપ્લિકેશનને બાહ્ય સ્ટોરેજ પર લખાવા માટે લાયક બનાવે છે"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"પ્રવૃત્તિઓને ફરીથી કદ યોગ્ય થવા માટે ફરજ પાડો"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"આ સુવિધા પ્રાયોગિક છે અને કામગીરી પર અસર કરી શકે છે."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> દ્વારા ઓવરરાઇડ થયું"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"અંદાજે <xliff:g id="TIME">%1$s</xliff:g> બાકી"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"તમારા વપરાશનાં આધારે લગભગ <xliff:g id="TIME">%1$s</xliff:g> બાકી છે"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"સંપૂર્ણપણે ચાર્જ થવામાં <xliff:g id="TIME">%1$s</xliff:g> બાકી"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> બાકી"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"તમારા વપરાશનાં આધારે <xliff:g id="TIME">%1$s</xliff:g> બાકી છે"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - લગભગ <xliff:g id="TIME">%2$s</xliff:g> બાકી"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - તમારા વપરાશનાં આધારે લગભગ <xliff:g id="TIME">%2$s</xliff:g> બાકી છે"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> બાકી"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - સંપૂર્ણપણે ચાર્જ થવા માટે <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index ffbd45511776..ed54e34711d9 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"पृष्ठभूमि प्रक्रिया सीमा"</string> <string name="show_all_anrs" msgid="28462979638729082">"सभी ANR दिखाएं"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"पृष्ठभूमि ऐप्स के लिए ऐप्स प्रतिसाद नहीं दे रहा डॉयलॉग दिखाएं"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"नोटिफ़िकेशन चैनल चेतावनी दिखाएं"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ऐप्लिकेशन मान्य चैनल के बिना नोटिफ़िकेशन पोस्ट करे तो स्क्रीन पर चेतावनी दिखाएं"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"ऐप्स को बाहरी मेमोरी पर बाध्य करें"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"इससे कोई भी ऐप्लिकेशन, मेनिफेस्ट मानों को अनदेखा करके, बाहरी मेमोरी पर लिखने योग्य बन जाता है"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"आकार बदले जाने के लिए गतिविधियों को बाध्य करें"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"यह सुविधा प्रायोगिक है और निष्पादन को प्रभावित कर सकती है."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> के द्वारा ओवरराइड किया गया"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"लगभग <xliff:g id="TIME">%1$s</xliff:g> शेष"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"आपके उपयोग के आधार पर लगभग <xliff:g id="TIME">%1$s</xliff:g> का समय बचा है"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"पूरी तरह से चार्ज होने में <xliff:g id="TIME">%1$s</xliff:g> शेष"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> शेष"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"आपके उपयोग के आधार पर <xliff:g id="TIME">%1$s</xliff:g> का समय बचा है"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - लगभग <xliff:g id="TIME">%2$s</xliff:g> शेष"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - आपके उपयोग के आधार पर लगभग <xliff:g id="TIME">%2$s</xliff:g> का समय बचा है"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> शेष"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> पूरी तरह से चार्ज होने तक"</string> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index b7a113fe8a20..e6547a2856e4 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Ograničenje pozadinskog procesa"</string> <string name="show_all_anrs" msgid="28462979638729082">"Prikaži sve ANR-ove"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Prikaz dijaloga o pozad. aplik. koja ne odgovara"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Prikaži upozorenja kanala obavijesti"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Prikazuje upozorenje na zaslonu kada aplikacija objavi obavijest bez važećeg kanala"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Prisilno dopusti aplikacije u vanjskoj pohrani"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Aplikacije se mogu zapisivati u vanjsku pohranu neovisno o vrijednostima manifesta"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Nametni mogućnost promjene veličine za aktivnosti"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ova je značajka eksperimentalna i može utjecati na performanse."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Premošćeno postavkom <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Još otprilike <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Još otprilike <xliff:g id="TIME">%1$s</xliff:g> na temelju vaše upotrebe"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Još <xliff:g id="TIME">%1$s</xliff:g> do potpune napunjenosti"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Još <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Još <xliff:g id="TIME">%1$s</xliff:g> na temelju vaše upotrebe"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – preostalo je približno <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – još otprilike <xliff:g id="TIME">%2$s</xliff:g> na temelju vaše upotrebe"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – još <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do potpune napunjenosti"</string> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 589eda7f27ca..bc185bba78af 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Háttérfolyamat-korlátozás"</string> <string name="show_all_anrs" msgid="28462979638729082">"Összes ANR mutatása"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Az Alkalmazás nem válaszol ablak megjelenítése"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Értesítő csatorna figyelmeztetései"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Figyelmeztet, ha egy alkalmazás érvényes csatorna nélkül küld értesítést"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Külső tárhely alkalmazásainak engedélyezése"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Lehetővé teszi bármely alkalmazás külső tárhelyre való írását a jegyzékértékektől függetlenül"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Tevékenységek átméretezésének kényszerítése"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ez egy kísérleti funkció, és hatással lehet a teljesítményre."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Felülírva erre: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Körülbelül <xliff:g id="TIME">%1$s</xliff:g> maradt hátra"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Körülbelül <xliff:g id="TIME">%1$s</xliff:g> van hátra az eszköz igénybevétele alapján"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> a teljes töltöttségig"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> van hátra"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> van hátra az eszköz igénybevétele alapján"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - körülbelül <xliff:g id="TIME">%2$s</xliff:g> van hátra"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – körülbelül <xliff:g id="TIME">%2$s</xliff:g> van hátra az eszköz igénybevétele alapján"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> van hátra"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> a teljes feltöltésig"</string> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index e7708aa99cc8..6608cc62652e 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Հետնաշերտի գործընթացի սահմանաչափ"</string> <string name="show_all_anrs" msgid="28462979638729082">"Ցույց տալ բոլոր ANR-երը"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Ցուցադրել այն ծրագիրը, որը չի արձագանքում երկխոսությունը հետնաշերտի ծրագրերի համար"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Ցուցադրել ծանուցումների ալիքի զգուշացումները"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Էկրանին ցուցադրվում է զգուշացում, երբ որևէ հավելված փակցնում է ծանուցում առանց վավեր ալիքի"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Միշտ թույլատրել ծրագրեր արտաքին պահեստում"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Թույլ է տալիս ցանկացած հավելված պահել արտաքին սարքում՝ մանիֆեստի արժեքներից անկախ"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Ստիպել, որ ակտիվությունների չափերը լինեն փոփոխելի"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Սա փորձնական գործառույթ է և կարող է ազդել սարքի աշխատանքի վրա:"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Գերազանցված է <xliff:g id="TITLE">%1$s</xliff:g>-ից"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Մնացել է մոտ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Մնացել է մոտ <xliff:g id="TIME">%1$s</xliff:g>՝ օգտագործման եղանակից կախված"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Մինչև լրիվ լիցքավորումը մնացել է <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Մնացել է <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Մնացել է <xliff:g id="TIME">%1$s</xliff:g>՝ օգտագործման եղանակից կախված"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – մնացել է մոտ <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - մնացել է մոտ <xliff:g id="TIME">%2$s</xliff:g>՝ օգտագործման եղանակից կախված"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - մնացել է <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> մինչև լրիվ լիցքավորումը"</string> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 35118b6e110a..20cc226c1f1d 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Batas proses latar blkg"</string> <string name="show_all_anrs" msgid="28462979638729082">"Tampilkan semua ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Tmplkn dialog Apl Tidak Merespons utk apl ltr blkg"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Menampilkan peringatan channel notifikasi"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Menampilkan peringatan di layar saat aplikasi memposting notifikasi tanpa channel yang valid"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Paksa izinkan aplikasi di eksternal"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Membuat semua aplikasi dapat ditulis ke penyimpanan eksternal, terlepas dari nilai manifes"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Paksa aktivitas agar ukurannya dapat diubah"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Fitur ini bersifat eksperimental dan dapat memengaruhi kinerja."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Digantikan oleh <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Sekitar <xliff:g id="TIME">%1$s</xliff:g> lagi"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Kira-kira <xliff:g id="TIME">%1$s</xliff:g> lagi berdasarkan penggunaan Anda"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> lagi hingga terisi penuh"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> tersisa"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> lagi berdasarkan penggunaan Anda"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - kira-kira <xliff:g id="TIME">%2$s</xliff:g> lagi"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - kira-kira <xliff:g id="TIME">%2$s</xliff:g> lagi berdasarkan penggunaan Anda"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> tersisa"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> lagi terisi penuh"</string> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 75de34123474..286f4fdcce5b 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Takmörkun á bakgrunnsvinnslum"</string> <string name="show_all_anrs" msgid="28462979638729082">"Öll forrit sem svara ekki"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Sýna „Forrit svarar ekki“ fyrir bakgrunnsforrit"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Sýna viðvaranir tilkynningarásar"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Birtir viðvörun á skjánum þegar forrit birtir tilkynningu án gildrar rásar"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Þvinga fram leyfi forrita í ytri geymslu"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Gerir öll forrit skrifanleg í ytra geymslurými, óháð gildum í upplýsingaskrá"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Þvinga breytanlega stærð virkni"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Þessi eiginleiki er á tilraunastigi og getur haft áhrif á frammistöðu."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Hnekkt af <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Um það bil <xliff:g id="TIME">%1$s</xliff:g> eftir"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"U.þ.b. <xliff:g id="TIME">%1$s</xliff:g> eftir miðað við notkun þína"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> þar til hleðslu er lokið"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> eftir"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> eftir miðað við notkun þína"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – um <xliff:g id="TIME">%2$s</xliff:g> eftir"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – u.þ.b. <xliff:g id="TIME">%2$s</xliff:g> eftir miðað við notkun þína"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> eftir"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> þar til fullri hleðslu er náð"</string> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index b3480d59aa64..151609dbd361 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limite processi background"</string> <string name="show_all_anrs" msgid="28462979638729082">"Mostra tutti errori ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Mostra finestra ANR per applicazioni in background"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Mostra avvisi canale di notifica"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Viene mostrato un avviso sullo schermo quando un\'app pubblica una notifica senza un canale valido"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forza autorizzazione app su memoria esterna"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Consente l\'installazione di qualsiasi app su memoria esterna, indipendentemente dai valori manifest"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Imponi formato modificabile alle attività"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Questa funzione è sperimentale e potrebbe influire sulle prestazioni."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Valore sostituito da <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Tempo approssimativo rimanente: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Tempo rimanente in base al tuo utilizzo: <xliff:g id="TIME">%1$s</xliff:g> circa"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Tempo rimanente alla carica completa: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Tempo rimanente: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Tempo rimanente in base al tuo utilizzo: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - ancora circa <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tempo rimanente in base al tuo utilizzo: <xliff:g id="TIME">%2$s</xliff:g> circa"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tempo rimanente: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> alla carica completa"</string> diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml index 239e8cbf600e..917f7108b851 100644 --- a/packages/SettingsLib/res/values-iw/arrays.xml +++ b/packages/SettingsLib/res/values-iw/arrays.xml @@ -152,11 +152,11 @@ </string-array> <string-array name="select_logd_size_summaries"> <item msgid="6921048829791179331">"כבוי"</item> - <item msgid="2969458029344750262">"64K לכל מאגר יומן"</item> - <item msgid="1342285115665698168">"256K לכל מאגר יומן"</item> - <item msgid="1314234299552254621">"1M לכל מאגר יומן"</item> - <item msgid="3606047780792894151">"4M לכל מאגר יומן"</item> - <item msgid="5431354956856655120">"16M לכל מאגר יומן"</item> + <item msgid="2969458029344750262">"64K לכל מאגר של יומן רישום"</item> + <item msgid="1342285115665698168">"256K לכל מאגר של יומן רישום"</item> + <item msgid="1314234299552254621">"1M לכל מאגר של יומן רישום"</item> + <item msgid="3606047780792894151">"4M לכל מאגר של יומן רישום"</item> + <item msgid="5431354956856655120">"16M לכל מאגר של יומן רישום"</item> </string-array> <string-array name="select_logpersist_titles"> <item msgid="1744840221860799971">"כבוי"</item> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index ecd7c93d5414..d43542c8e999 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -192,11 +192,11 @@ <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"העלה את רמת הרישום של Wi‑Fi ביומן, הצג לכל SSID RSSI ב-Wi‑Fi Picker"</string> <string name="wifi_aggressive_handover_summary" msgid="7266329646559808827">"כשאפשרות זו מופעלת, Wi-Fi יתנהג בצורה אגרסיבית יותר בעת העברת חיבור הנתונים לרשת הסלולרית כשאות ה-Wi-Fi חלש."</string> <string name="wifi_allow_scan_with_traffic_summary" msgid="2575101424972686310">"התר/מנע סריקות נדידה של Wi-Fi בהתבסס על נפח תנועת הנתונים הקיימת בממשק"</string> - <string name="select_logd_size_title" msgid="7433137108348553508">"גדלי מאגר של יוצר יומן"</string> + <string name="select_logd_size_title" msgid="7433137108348553508">"גדלי מאגר של יומן רישום"</string> <string name="select_logd_size_dialog_title" msgid="1206769310236476760">"בחר גדלים של יוצר יומן לכל מאגר יומן"</string> <string name="dev_logpersist_clear_warning_title" msgid="684806692440237967">"האם למחוק את אחסון המתעד המתמיד?"</string> <string name="dev_logpersist_clear_warning_message" msgid="2256582531342994562">"כשאנחנו כבר לא מבצעים מעקב באמצעות המתעד המתמיד, אנחנו נדרשים למחוק את נתוני המתעד המקומי במכשיר."</string> - <string name="select_logpersist_title" msgid="7530031344550073166">"אחסון נתוני מתעד מתמיד במכשיר"</string> + <string name="select_logpersist_title" msgid="7530031344550073166">"אחסון מתמיד של נתוני תיעוד במכשיר"</string> <string name="select_logpersist_dialog_title" msgid="4003400579973269060">"בחר מאגר נתונים זמני ליומן לשם אחסון מתמיד במכשיר"</string> <string name="select_usb_configuration_title" msgid="2649938511506971843">"בחר תצורת USB"</string> <string name="select_usb_configuration_dialog_title" msgid="6385564442851599963">"בחר תצורת USB"</string> @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"מגבלה של תהליכים ברקע"</string> <string name="show_all_anrs" msgid="28462979638729082">"הצג את כל פריטי ה-ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"הצג תיבת דו-שיח של \'אפליקציה לא מגיבה\' עבור אפליקציות שפועלות ברקע"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"אזהרות לגבי ערוץ הודעות"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"הצגת אזהרה כשאפליקציה שולחת הודעה ללא ערוץ חוקי"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"אילוץ הרשאת אפליקציות באחסון חיצוני"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"מאפשר כתיבה של כל אפליקציה באחסון חיצוני, ללא התחשבות בערכי המניפסט"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"אלץ יכולת קביעת גודל של הפעילויות"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"תכונה זו היא ניסיונית ועשויה להשפיע על הביצועים."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"נעקף על ידי <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"עוד <xliff:g id="TIME">%1$s</xliff:g> בקירוב"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"על סמך השימוש במכשיר, הסוללה תתרוקן בעוד <xliff:g id="TIME">%1$s</xliff:g>, בקירוב"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> עד לטעינה מלאה"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"נותרו <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"על סמך השימוש במכשיר, הסוללה תתרוקן בעוד <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - הזמן הנותר: בערך <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - על סמך השימוש במכשיר, הסוללה תתרוקן בעוד <xliff:g id="TIME">%2$s</xliff:g>, בקירוב"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - נותרו <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> עד לטעינה מלאה"</string> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 0d7541055d12..4bdfc536de34 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"バックグラウンドプロセスの上限"</string> <string name="show_all_anrs" msgid="28462979638729082">"すべてのANRを表示"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"バックグラウンドアプリが応答しない場合に通知する"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"通知チャネルの警告を表示"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"アプリから有効なチャネルのない通知が投稿されたときに画面上に警告を表示します"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"外部ストレージへのアプリの書き込みを許可"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"マニフェストの値に関係なく、すべてのアプリを外部ストレージに書き込めるようになります"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"アクティビティをサイズ変更可能にする"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"この機能は試験運用機能であり、パフォーマンスに影響することがあります。"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g>によって上書き済み"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"あと約 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"残り時間: 約 <xliff:g id="TIME">%1$s</xliff:g>(使用状況に基づく)"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"フル充電まであと <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g>(残り時間)"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"残り時間: <xliff:g id="TIME">%1$s</xliff:g>(使用状況に基づく)"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - 残り約 <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - 残り時間: 約 <xliff:g id="TIME">%2$s</xliff:g>(使用状況に基づく)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>(残り時間)"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - フル充電まで <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index a7d5455dc359..ce8b25a11433 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"ფონური პროცესების ლიმიტი"</string> <string name="show_all_anrs" msgid="28462979638729082">"ყველა ANR-ის ჩვენება"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"შეტყობინების ჩვენება, როცა ფონური აპლიკაცია არ პასუხობს"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"შეტყობინებათა არხის გაფრთხილებების ჩვენება"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ეკრანზე აჩვენებს გაფრთხილებას, როცა აპი შეტყობინებას სწორი არხის გარეშე განათავსებს"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"აპების დაშვება გარე მეხსიერებაში"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"აპები ჩაიწერება გარე მეხსიერებაზე აღწერის ფაილების მნიშვნელობების მიუხედავად"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"ზომაცვლადი აქტივობების იძულება"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ეს ფუნქცია საცდელია და შეიძლება გავლენა იქონიოს ფუნქციონალობაზე."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"უკუგებულია <xliff:g id="TITLE">%1$s</xliff:g>-ის მიერ"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"დარჩა დაახლოებით <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"დარჩა დაახლოებით <xliff:g id="TIME">%1$s</xliff:g>, ბატარეის მოხმარების გათვალისწინებით"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"სრულ დატენვამდე დარჩენილია <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"დარჩენილია <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"დარჩა <xliff:g id="TIME">%1$s</xliff:g>, ბატარეის მოხმარების გათვალისწინებით"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> — დარჩა დაახლოებით <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> — დარჩა დაახლოებით <xliff:g id="TIME">%2$s</xliff:g>, ბატარეის მოხმარების გათვალისწინებით"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> — დარჩენილია <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> — სრულ დატენვამდე დარჩა <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 1a478aed80ac..e1373b5c7149 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Фондық үрдіс шектеуі"</string> <string name="show_all_anrs" msgid="28462979638729082">"Барлық ANR (қолданба жауап бермеді) хабарларын көрсетіңіз"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Фондық қолданбалардың жауап бермегенін көрсету"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Хабарландыру арнасының ескертулерін көрсету"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Қолданба жарамсыз арна арқылы хабарландыру жариялағанда, экрандық ескертуді көрсетеді"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Сыртқыда қолданбаларға мәжбүрлеп рұқсат ету"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Манифест мәндеріне қарамастан кез келген қолданбаны сыртқы жадқа жазуға жарамды етеді"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Әрекеттерді өлшемін өзгертуге болатын етуге мәжбүрлеу"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Бұл мүмкіндік эксперименттік болып табылады және өнімділікке әсер етуі мүмкін."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> үстінен басқан"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Қалған <xliff:g id="TIME">%1$s</xliff:g> туралы"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Пайдалану негізінде шамамен <xliff:g id="TIME">%1$s</xliff:g> қалды"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Толық зарядқа <xliff:g id="TIME">%1$s</xliff:g> қалды"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> қалды"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Пайдалану негізінде <xliff:g id="TIME">%1$s</xliff:g> қалды"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – шамамен <xliff:g id="TIME">%2$s</xliff:g> қалды"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - пайдалану негізінде шамамен <xliff:g id="TIME">%2$s</xliff:g> қалды"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> қалды"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – толық зарядталғанға дейін <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index 8b17bd17f8c2..f7e8355ec399 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"ដែនកំណត់ដំណើរការក្នុងផ្ទៃខាងក្រោយ"</string> <string name="show_all_anrs" msgid="28462979638729082">"បង្ហាញ ANRs ទាំងអស់"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"បង្ហាញប្រអប់កម្មវិធីមិនឆ្លើយតបសម្រាប់កម្មវិធីផ្ទៃខាងក្រោយ"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"បង្ហាញការព្រមានអំពីបណ្តាញជូនដំណឹង"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"បង្ហាញការព្រមាននៅលើអេក្រង់ នៅពេលកម្មវិធីបង្ហោះការជូនដំណឹងដោយមិនមានបណ្តាញត្រឹមត្រូវ"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"បង្ខំឲ្យអនុញ្ញាតកម្មវិធីលើឧបករណ៍ផ្ទុកខាងក្រៅ"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ធ្វើឲ្យកម្មវិធីទាំងឡាយមានសិទ្ធិសរសេរទៅកាន់ឧបករណ៍ផ្ទុកខាងក្រៅ ដោយមិនគិតពីតម្លៃជាក់លាក់"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"បង្ខំឲ្យសកម្មភាពអាចប្តូរទំហំបាន"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"មុខងារនេះគឺជាការពិសោធន៍ ហើយអាចប៉ះពាល់ដំណើរការ។"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"បដិសេធដោយ <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"សល់ប្រហែល <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"សល់ប្រហែល <xliff:g id="TIME">%1$s</xliff:g> ទៀតផ្អែកលើការប្រើប្រាស់របស់អ្នក"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"សល់ <xliff:g id="TIME">%1$s</xliff:g> ទើបសាកថ្មពេញ"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"នៅសល់ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"សល់ <xliff:g id="TIME">%1$s</xliff:g> ទៀតផ្អែកលើការប្រើប្រាស់របស់អ្នក"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - សល់ប្រហែល <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - សល់ប្រហែល <xliff:g id="TIME">%2$s</xliff:g> ទៀតផ្អែកលើការប្រើប្រាស់របស់អ្នក"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - នៅសល់ <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> រហូតដល់សាកពេញ"</string> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index 63352ec2f982..b8ace58e6584 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"ಹಿನ್ನೆಲೆ ಪ್ರಕ್ರಿಯೆ ಮಿತಿ"</string> <string name="show_all_anrs" msgid="28462979638729082">"ಎಲ್ಲ ANR ಗಳನ್ನು ತೋರಿಸು"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"ಹಿನ್ನೆಲೆ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ ಎಂಬ ಸಂಭಾಷಣೆ ತೋರಿಸು"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"ಅಧಿಸೂಚನೆ ಎಚ್ಚರಿಕೆ ತೋರಿಸಿ"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ಅಮಾನ್ಯ ಚಾನಲ್ ಅಧಿಸೂಚನೆಗಾಗಿ ಪರದೆಯಲ್ಲಿ ಎಚ್ಚರಿಕೆ"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"ಬಾಹ್ಯವಾಗಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಒತ್ತಾಯವಾಗಿ ಅನುಮತಿಸಿ"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ಮ್ಯಾನಿಫೆಸ್ಟ್ ಮೌಲ್ಯಗಳು ಯಾವುದೇ ಆಗಿದ್ದರೂ, ಬಾಹ್ಯ ಸಂಗ್ರಹಣೆಗೆ ಬರೆಯಲು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅರ್ಹಗೊಳಿಸುತ್ತದೆ"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"ಚಟುವಟಿಕೆಗಳನ್ನು ಮರುಗಾತ್ರಗೊಳಿಸುವಂತೆ ಒತ್ತಾಯ ಮಾಡಿ"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ಇದು ಪ್ರಾಯೋಗಿಕ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಕಾರ್ಯಕ್ಷಮತೆ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> ಮೂಲಕ ಅತಿಕ್ರಮಿಸುತ್ತದೆ"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"ಸುಮಾರು <xliff:g id="TIME">%1$s</xliff:g> ಬಾಕಿಯಿದೆ"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"ನಿಮ್ಮ ಬಳಕೆಯ ಆಧಾರದ ಮೇಲೆ ಸುಮಾರು <xliff:g id="TIME">%1$s</xliff:g> ಉಳಿದಿದೆ"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"ಸಂಪೂರ್ಣ ಚಾರ್ಜ್ ಆಗಲು <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> ಉಳಿದಿದೆ"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"ನಿಮ್ಮ ಬಳಕೆಯ ಆಧಾರದ ಮೇಲೆ <xliff:g id="TIME">%1$s</xliff:g> ಉಳಿದಿದೆ"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - ಸುಮಾರು <xliff:g id="TIME">%2$s</xliff:g> ಬಾಕಿಯಿದೆ"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - ನಿಮ್ಮ ಬಳಕೆಯ ಆಧಾರದ ಮೇಲೆ <xliff:g id="TIME">%2$s</xliff:g> ಉಳಿದಿದೆ"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ಉಳಿದಿದೆ"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - ಸಂಪೂರ್ಣ ಚಾರ್ಜ್ ಆಗಲು <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index dffc4d3ba756..6d4e64eb9829 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"백그라운드 프로세스 수 제한"</string> <string name="show_all_anrs" msgid="28462979638729082">"모든 ANR 보기"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"백그라운드 앱에 대해 앱 응답 없음 대화상자 표시"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"알림 채널 경고 표시"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"앱에서 유효한 채널 없이 알림을 게시하면 화면에 경고가 표시됩니다."</string> <string name="force_allow_on_external" msgid="3215759785081916381">"외부에서 앱 강제 허용"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"매니페스트 값과 관계없이 모든 앱이 외부 저장소에 작성되도록 허용"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"활동의 크기가 조정 가능하도록 설정"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"실험실 기능이며 성능에 영향을 줄 수 있습니다."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> 우선 적용됨"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"약 <xliff:g id="TIME">%1$s</xliff:g> 남음"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"내 사용량을 기준으로 약 <xliff:g id="TIME">%1$s</xliff:g> 남음"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"충전 완료까지 <xliff:g id="TIME">%1$s</xliff:g> 남음"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> 남음"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"내 사용량을 기준으로 <xliff:g id="TIME">%1$s</xliff:g> 남음"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - 약 <xliff:g id="TIME">%2$s</xliff:g> 남음"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - 내 사용량을 기준으로 약 <xliff:g id="TIME">%2$s</xliff:g> 남음"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> 남음"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - 충전 완료까지 <xliff:g id="TIME">%2$s</xliff:g> 남음"</string> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 08baf799186e..8289c097ef57 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Фондогу процесстер чеги"</string> <string name="show_all_anrs" msgid="28462979638729082">"Бардык ANR\'лерди көрсөтүү"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Фондогу колдонмолорго Колдонмо Жооп Бербейт деп көрсөтүү"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Эскертме каналынын эскертүүлөрүн көрсөтүү"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Колдонмодон жарактуу каналсыз эскертме жайгаштырылганда, экрандан эскертүү көрсөтүлөт"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Тышкы сактагычка сактоого уруксат берүү"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Манифест маанилерине карабастан бардык колдонмолорду тышкы сактагычка сактоого уруксат берет"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Аракеттердин өлчөмүн өзгөртүүнү мажбурлоо"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Бул сынамык мүмкүнчүлүк болгондуктан, түзмөктүн иштешине таасир этиши мүмкүн."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> менен алмаштырылган"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Батарея түгөнгөнгө чейин калган убакыт: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Колдонушуңузга караганда болжол менен <xliff:g id="TIME">%1$s</xliff:g> калды"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Батарея толгонго чейин калган убакыт: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> калды"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Колдонушуңузга караганда <xliff:g id="TIME">%1$s</xliff:g> калды"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – болжол менен <xliff:g id="TIME">%2$s</xliff:g> калды"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - колдонушуңузга караганда болжол менен <xliff:g id="TIME">%2$s</xliff:g> калды"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> калды"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> кийин толук кубатталат"</string> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index ac94a46c359c..4a64d07249da 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"ການຈຳກັດໂປຣເຊສໃນພື້ນຫຼັງ"</string> <string name="show_all_anrs" msgid="28462979638729082">"ສະແດງ ANRs ທັງຫມົດ"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"ສະແດງໜ້າຈໍແອັບຯທີ່ບໍ່ຕອບສະໜອງສຳລັບແອັບຯພື້ນຫຼັງ"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"ສະແດງຄຳເຕືອນຊ່ອງການແຈ້ງເຕືອນ"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ສະແດງຄຳເຕືອນໃນໜ້າຈໍເມື່ອແອັບໂພສການແຈ້ງເຕືອນໂດຍບໍ່ມີຊ່ອງທີ່ຖືກຕ້ອງ"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"ບັງຄັບອະນຸຍາດແອັບຢູ່ພາຍນອກ"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ເຮັດໃຫ້ທຸກແອັບມີສິດໄດ້ຮັບການຂຽນໃສ່ພື້ນທີ່ຈັດເກັບຂໍ້ມູນພາຍນອກ, ໂດຍບໍ່ຄຳນຶງເຖິງຄ່າ manifest"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"ບັງຄັງໃຫ້ກິດຈະກຳປ່ຽນຂະໜາດໄດ້"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ຄຸນສົມບັດນີ້ກຳລັງຢູ່ໃນການທົດລອງແລະອາດມີຜົນຕໍ່ປະສິດທິພາບ."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"ຖືກແທນໂດຍ <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"ອີກປະມານ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"ເຫຼືອອີກປະມານ <xliff:g id="TIME">%1$s</xliff:g> ໂດຍອ້າງອີງຈາກການນຳໃຊ້ຂອງທ່ານ"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> ຈົນກວ່າຈະສາກເຕັມ"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"ຍັງເຫຼືອ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"ເຫຼືອອີກ <xliff:g id="TIME">%1$s</xliff:g> ໂດຍອ້າງອີງຈາກການນຳໃຊ້ຂອງທ່ານ"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - ຍັງເຫຼືອປະມານ <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - ເຫຼືອອີກປະມານ <xliff:g id="TIME">%2$s</xliff:g> ໂດຍອ້າງອີງຈາກການນຳໃຊ້ຂອງທ່ານ"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - ຍັງເຫຼືອ <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ຈົນກວ່າຈະສາກເຕັມ"</string> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index 01a1c44bd5fe..e9bf13923a01 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Fono procesų apribojimas"</string> <string name="show_all_anrs" msgid="28462979638729082">"Rodyti visus ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Fon. programose rodyti dialogo langą „Neatsako“"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Rodyti pran. kan. įspėj."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Ekr. rod. įsp., kai progr. pask. pr. be tink. kan."</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Priverstinai leisti programas išorinėje atmintin."</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Nustatoma, kad visas programas būtų galima įrašyti į išorinę saugyklą, nepaisant aprašo verčių"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Priv. nust., kad veiksm. b. g. atl. kelių d. lang."</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ši funkcija yra eksperimentinė ir ji gali turėti įtakos našumui."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Nepaisyta naudojant nuostatą „<xliff:g id="TITLE">%1$s</xliff:g>“"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Liko maždaug <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Liko maždaug <xliff:g id="TIME">%1$s</xliff:g>, atsižvelgiant į naudojimą"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Iki visiškos įkrovos liko <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Liko <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Liko <xliff:g id="TIME">%1$s</xliff:g>, atsižvelgiant į naudojimą"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – liko maždaug <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – liko maždaug <xliff:g id="TIME">%2$s</xliff:g>, atsižvelgiant į naudojimą"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – liko <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> iki visiško įkrovimo"</string> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index f5a9ba632c25..bb2da263b58a 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Fona procesu ierobežojums"</string> <string name="show_all_anrs" msgid="28462979638729082">"Rādīt visus ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Rādīt fona lietotņu dialoglodz. Lietotne nereaģē"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Paziņojumu kanāla brīdinājumi"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Brīdinājums ekrānā, kad lietotne publicē paziņojumu, nenorādot derīgu kanālu"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Lietotņu piespiedu atļaušana ārējā krātuvē"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Ļauj jebkuru lietotni ierakstīt ārējā krātuvē neatkarīgi no manifesta vērtības."</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Pielāgot darbības"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Šī funkcija ir eksperimentāla un var ietekmēt veiktspēju."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Jaunā preference: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Atlikušais laiks: aptuveni <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Atlikušais laiks: aptuveni <xliff:g id="TIME">%1$s</xliff:g> (ņemot vērā lietojumu)"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Atlikušais laiks līdz pilnai uzlādei: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Atlicis: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Atlikušais laiks: <xliff:g id="TIME">%1$s</xliff:g> (ņemot vērā lietojumu)"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - vēl apmēram <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> — atlikušais laiks: aptuveni <xliff:g id="TIME">%2$s</xliff:g> (ņemot vērā lietojumu)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> — atlicis: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> — <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>, kamēr pilnībā uzlādēts"</string> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 437db0337836..fc4a1741dde1 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Граница на процес во зад."</string> <string name="show_all_anrs" msgid="28462979638729082">"Прикажи ги сите ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Прикажи „Апл. не реагира“ за. апл. во заднина"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Прикажи ги предупредувањата на каналот за известувањe"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Предупредува кога апликација дава известување без важечки канал"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Принуд. дозволете апликации на надворешна меморија"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Прави секоја апликација да биде подобна за запишување на надворешна меморија, независно од вредностите на манифестот"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Принуди ги активностите да ја менуваат големината"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Функцијата е експериментална и може да влијае на изведбата."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Прескокнато според <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Преостануваат околу <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Уште околу <xliff:g id="TIME">%1$s</xliff:g> според користењето"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Преостануваат <xliff:g id="TIME">%1$s</xliff:g> дури се наполни целосно"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"уште <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Уште <xliff:g id="TIME">%1$s</xliff:g> според користењето"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - уште околу <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - уште околу <xliff:g id="TIME">%2$s</xliff:g> според користењето"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - уште <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> дури се наполни целосно"</string> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index d3b574c9557b..8a383238d026 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"പശ്ചാത്തല പ്രോസസ്സ് പരിധി"</string> <string name="show_all_anrs" msgid="28462979638729082">"എല്ലാ ANR-കളും ദൃശ്യമാക്കുക"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"പശ്ചാത്തല അപ്ലിക്കേഷനുകൾക്ക് അപ്ലിക്കേഷൻ പ്രതികരിക്കുന്നില്ല എന്ന ഡയലോഗ് കാണിക്കുക"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"ചാനൽ മുന്നറിയിപ്പ് കാണിക്കൂ"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"സാധുതയുള്ള ചാനലില്ലാതെ ഒരു ആപ്പ്, അറിയിപ്പ് പോസ്റ്റുചെയ്യുമ്പോൾ ഓൺ-സ്ക്രീൻ മുന്നറിയിപ്പ് പ്രദർശിപ്പിക്കുന്നു"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"ബാഹ്യമായതിൽ നിർബന്ധിച്ച് അനുവദിക്കുക"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"മാനിഫെസ്റ്റ് മൂല്യങ്ങൾ പരിഗണിക്കാതെ, ബാഹ്യ സ്റ്റോറേജിലേക്ക് എഴുതപ്പെടുന്നതിന് ഏതൊരു ആപ്പിനെയും യോഗ്യമാക്കുന്നു"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"വലിപ്പം മാറ്റാൻ പ്രവർത്തനങ്ങളെ നിർബന്ധിക്കുക"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ഈ ഫീച്ചർ പരീക്ഷണാത്മകമായതിനാൽ പ്രകടനത്തെ ബാധിച്ചേക്കാം."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> ഉപയോഗിച്ച് അസാധുവാക്കി"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"ഏകദേശം <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"നിങ്ങളുടെ ഉപയോഗത്തെ അടിസ്ഥാനമാക്കി ഏതാണ്ട് <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"മുഴുവൻ ചാർജാകാൻ <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"നിങ്ങളുടെ ഉപയോഗത്തെ അടിസ്ഥാനമാക്കി <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - ഏതാണ്ട് <xliff:g id="TIME">%2$s</xliff:g> ശേഷിക്കുന്നു"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - നിങ്ങളുടെ ഉപയോഗത്തെ അടിസ്ഥാനമാക്കി ഏതാണ്ട് <xliff:g id="TIME">%2$s</xliff:g> ശേഷിക്കുന്നു"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ശേഷിക്കുന്നു"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - ഫുൾ ചാർജാകാൻ <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 3469d7aab69a..5f777625ba29 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Далд процессын хязгаар"</string> <string name="show_all_anrs" msgid="28462979638729082">"Бүх ANRs харуулах"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Далд апп-уудад Апп Хариу Өгөхгүй байна гэснийг харуулах"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Мэдэгдлийн сувгийн анхааруулгыг харуулах"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Апп хүчинтэй суваггүйгээр мэдэгдэл гаргах үед дэлгэцэд сануулга харуулна"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Аппыг гадаад санах ойд хадгалахыг зөвшөөрөх"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Манифест утгыг нь үл хамааран дурын апп-г гадаад санах ойд бичих боломжтой болгодог"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Үйл ажиллагааны хэмжээг өөрчилж болохуйц болгох"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Энэ функц туршилтынх бөгөөд ажиллагаанд нөлөөлж болзошгүй."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Давхарласан <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Ойролцоогоор <xliff:g id="TIME">%1$s</xliff:g> үлдсэн"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Таны хэрэглээнд тулгуурлан <xliff:g id="TIME">%1$s</xliff:g> орчмын хугацаа үлдсэн байна"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Бүрэн цэнэглэх хүртэл <xliff:g id="TIME">%1$s</xliff:g> үлдсэн"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> үлдсэн"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Таны хэрэглээнд тулгуурлан <xliff:g id="TIME">%1$s</xliff:g> орчмын хугацаа үлдсэн байна"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g>-с <xliff:g id="TIME">%2$s</xliff:g> үлдсэн"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - таны хэрэглээнд тулгуурлан <xliff:g id="TIME">%2$s</xliff:g> орчмын хугацаа үлдсэн байна"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> үлдсэн"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"бүрэн цэнэглэх хүртэл <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 37e5740f80b6..dc4f42cf3a77 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"पार्श्वभूमी प्रक्रिया मर्यादा"</string> <string name="show_all_anrs" msgid="28462979638729082">"सर्व ANR दर्शवा"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"पार्श्वभूमी अॅप्ससाठी अॅप प्रतिसाद देत नाही संवाद दर्शवा"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"सूचना चॅनेल चेतावण्या दाखवा"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"एखादे अॅप वैध चॅनेलशिवाय सूचना पोस्ट करते तेव्हा स्क्रीनवर चेतावणी देते"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"बाह्यवर अॅप्सना अनुमती देण्याची सक्ती करा"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"मॅनिफेस्ट मूल्यांकडे दुर्लक्ष करून, कोणत्याही अॅपला बाह्य संचयनावर लेखन केले जाण्यासाठी पात्र बनविते"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"क्रियाकलापाचा आकार बदलण्यायोग्य होण्याची सक्ती करा"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"हे वैशिष्ट्य प्रायोगिक आहे आणि कदाचित कार्यप्रदर्शन प्रभावित करू शकते."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारे अधिलिखित"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"सुमारे <xliff:g id="TIME">%1$s</xliff:g> शिल्लक"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"तुमच्या वापरानुसार अंदाजे <xliff:g id="TIME">%1$s</xliff:g> पुरेल इतकी बॅटरी शिल्लक आहे"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"पूर्णपणे चार्ज होण्यास <xliff:g id="TIME">%1$s</xliff:g> शिल्लक"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> शिल्लक"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"तुमच्या वापरानुसार <xliff:g id="TIME">%1$s</xliff:g> पुरेल इतकी बॅटरी शिल्लक आहे"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - सुमारे <xliff:g id="TIME">%2$s</xliff:g> शिल्लक"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - तुमच्या वापरानुसार अंदाजे <xliff:g id="TIME">%2$s</xliff:g> पुरेल इतकी बॅटरी शिल्लक आहे"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> शिल्लक"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - पूर्णपणे चार्ज होण्यात <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index 634642189332..81bdb2614fa1 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Had proses latar belakang"</string> <string name="show_all_anrs" msgid="28462979638729082">"Tunjukkan semua ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Tunjukkan dialog Aplikasi Tidak Memberi Maklum Balas untuk aplikasi latar belakang"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Papar amaran saluran pemberitahuan"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Memaparkan amaran pada skrin apabila apl menyiarkan pemberitahuan tanpa saluran sah"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Benarkan apl secara paksa pada storan luaran"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Menjadikan sebarang apl layak ditulis ke storan luaran, tanpa mengambil kira nilai manifes"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Paksa aktiviti supaya boleh diubah saiz"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ciri ini adalah percubaan dan boleh menjejaskan prestasi."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Diatasi oleh <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Kira-kira <xliff:g id="TIME">%1$s</xliff:g> lagi"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Tinggal kira-kira <xliff:g id="TIME">%1$s</xliff:g> berdasarkan penggunaan anda"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> lagi sehingga dicas penuh"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> lagi"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Tinggal <xliff:g id="TIME">%1$s</xliff:g> berdasarkan penggunaan anda"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - kira-kira <xliff:g id="TIME">%2$s</xliff:g> lagi"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - tinggal kira-kira <xliff:g id="TIME">%2$s</xliff:g> berdasarkan penggunaan anda"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> lagi"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> sehingga dicas penuh"</string> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index ff730a64efbb..882894c2f35a 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"နောက်ခံလုပ်ငန်းစဉ်ကန့်သတ်ခြင်း"</string> <string name="show_all_anrs" msgid="28462979638729082">"ANRsအားလုံးအား ပြသရန်"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"နောက်ခံအပ်ပလီကေးရှင်းအတွက်တုံ့ပြန်မှုမရှိပြရန်"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"ချန်နယ်သတိပေးချက်များပြပါ"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ချန်နယ်မရှိဘဲ အကြောင်းကြားလျှင် စကရင်တွင်သတိပေးသည်"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"အပြင်မှာ အတင်း ခွင့်ပြုရန်"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"တိကျစွာ သတ်မှတ်ထားသည့်တန်ဖိုးများရှိသော်လည်း၊ ပြင်ပသိုလှောင်ခန်းများသို့ မည်သည့်အက်ပ်ကိုမဆို ဝင်ရောက်ခွင့်ပြုပါ"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"လုပ်ဆောင်ချက်များ ဆိုက်ညှိရနိုင်ရန် လုပ်ခိုင်းပါ"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ဤဝန်ဆောင်မှုမှာ စမ်းသပ်အဆင့်သာဖြစ်၍ လုပ်ဆောင်မှုအားနည်းနိုင်သည်။"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> မှ ကျော်၍ လုပ်ထားသည်။"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"<xliff:g id="TIME">%1$s</xliff:g> ခန့်လိုပါသည်"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"သင့်အသုံးပြုမှုအရ <xliff:g id="TIME">%1$s</xliff:g> ခန့် ကျန်ပါသည်"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"အားပြည့်ရန် <xliff:g id="TIME">%1$s</xliff:g> လိုပါသည်"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> ကျန်သည်"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"သင့်အသုံးပြုမှုအရ <xliff:g id="TIME">%1$s</xliff:g> ကျန်ပါသည်"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> − <xliff:g id="TIME">%2$s</xliff:g> ခန့်ကျန်သည်"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - သင့်အသုံးပြုမှုအရ <xliff:g id="TIME">%2$s</xliff:g> ခန့် ကျန်ပါသည်"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ကျန်သည်"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> − အားပြည့်ရန် <xliff:g id="TIME">%2$s</xliff:g> ကျန်သည်"</string> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index ba2c3abf38b8..2775e50b9a1e 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Bakgrunnsprosessgrense"</string> <string name="show_all_anrs" msgid="28462979638729082">"Vis alle ANR-er"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Vis Appen svarer ikke-dialog for bakgrunnsapper"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Vis varselskanaladvarsler"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Viser advarsler på skjermen når apper publiserer varsler uten en gyldig kanal"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Tving frem tillatelse for ekstern lagring av apper"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Dette gjør at alle apper kan lagres på eksterne lagringsmedier – uavhengig av manifestverdier"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Tving aktiviteter til å kunne endre størrelse"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Dette er en eksperimentell funksjon som kan gjøre at telefonen ikke fungerer optimalt."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Overstyres av <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Omtrent <xliff:g id="TIME">%1$s</xliff:g> gjenstår"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Omtrent <xliff:g id="TIME">%1$s</xliff:g> igjen basert på bruken din"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> til det er fulladet"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> gjenstår"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> igjen basert på bruken din"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – omtrent <xliff:g id="TIME">%2$s</xliff:g> gjenstår"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – omtrent <xliff:g id="TIME">%2$s</xliff:g> igjen basert på bruken din"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> gjenstår"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> til det er fulladet"</string> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index 87acf3fe64f9..cfc66516b767 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"पृष्ठभूमि प्रक्रिया सीमा"</string> <string name="show_all_anrs" msgid="28462979638729082">"सबै ANRs देखाउनुहोस्"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"पृष्ठभूमि अनुप्रयोगका लागि जवाफ नदिइरहेका अनुप्रयोगहरू देखाउनुहोस्"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"सूचना च्यानलका चेतावनी देखाउनुहोस्"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"अनुप्रयोगले कुनै मान्य च्यानल बिना सूचना पोस्ट गर्दा स्क्रिनमा चेतावनी देखाउँछ"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"बाह्यमा बल प्रयोगको अनुमति प्राप्त अनुप्रयोगहरू"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"म्यानिफेेस्टका मानहरूको ख्याल नगरी कुनै पनि अनुप्रयोगलाई बाह्य भण्डारणमा लेख्न सकिने खाले बनाउँछ"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"गतिविधिहरू रिसाइज गर्नको लागि बाध्य गर्नुहोस्"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"यो सुविधा प्रयोगात्मक छ र प्रदर्शनमा असर गर्न सक्छ।"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारा अधिरोहित"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"लगभग <xliff:g id="TIME">%1$s</xliff:g> बाँकी"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"तपाईंको प्रयोगका आधारमा लगभग <xliff:g id="TIME">%1$s</xliff:g> बाँकी"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"पूर्णरूपमा चार्ज हुन <xliff:g id="TIME">%1$s</xliff:g> बाँकी"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"बाँकी समय <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"तपाईंको प्रयोगका आधारमा <xliff:g id="TIME">%1$s</xliff:g> बाँकी"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - करिब <xliff:g id="TIME">%2$s</xliff:g> बाँकी"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - तपाईंको प्रयोगका आधारमा लगभग <xliff:g id="TIME">%2$s</xliff:g> बाँकी"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"बाँकी समय <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - पूर्णरूपमा चार्ज हुन <xliff:g id="TIME">%2$s</xliff:g> बाँकी"</string> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 30c508970bd6..4756d696bc1d 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Achtergrondproceslimiet"</string> <string name="show_all_anrs" msgid="28462979638729082">"Alle ANR\'s weergeven"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"\'App reageert niet\' weerg. voor apps op achtergr."</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Kanaalwaarschuwingen voor meldingen weergeven"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Geeft een waarschuwing op het scherm weer wanneer een app een melding post zonder geldig kanaal"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Toestaan van apps op externe opslag afdwingen"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Hiermee komt elke app in aanmerking voor schrijven naar externe opslag, ongeacht de manifestwaarden"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Formaat activiteiten geforceerd aanpasbaar maken"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Deze functie is experimenteel en kan invloed hebben op de prestaties."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Overschreven door <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Nog ongeveer <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Nog ongeveer <xliff:g id="TIME">%1$s</xliff:g> over op basis van je gebruik"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Nog <xliff:g id="TIME">%1$s</xliff:g> tot volledig opgeladen"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> resterend"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Nog <xliff:g id="TIME">%1$s</xliff:g> over op basis van je gebruik"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - ongeveer <xliff:g id="TIME">%2$s</xliff:g> resterend"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g>: nog ongeveer <xliff:g id="TIME">%2$s</xliff:g> over op basis van je gebruik"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> resterend"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> tot volledig opgeladen"</string> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index a0631f5c4dbc..36b513705af7 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"ਪਿਛੋਕੜ ਪ੍ਰਕਿਰਿਆ ਸੀਮਾ"</string> <string name="show_all_anrs" msgid="28462979638729082">"ਸਾਰੇ ANR ਦਿਖਾਓ"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"ਪਿਛੋਕੜ ਐਪਸ ਲਈ ਐਪਸ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੇ ਡਾਇਲੌਗ ਦਿਖਾਓ"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"ਸੂਚਨਾ ਚੈਨਲ ਚੇਤਾਵਨੀਆਂ ਦਿਖਾਓ"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ਐਪ ਵੱਲੋਂ ਵੈਧ ਚੈਨਲ ਤੋਂ ਬਿਨਾਂ ਸੂਚਨਾ ਪੋਸਟ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ \'ਤੇ ਚੇਤਾਵਨੀ ਦਿਖਾਉਂਦੀ ਹੈ"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"ਐਪਸ ਨੂੰ ਬਾਹਰਲੇ ਤੇ ਜ਼ਬਰਦਸਤੀ ਆਗਿਆ ਦਿਓ"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ਮੈਨੀਫੈਸਟ ਮੁੱਲਾਂ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਕਿਸੇ ਵੀ ਐਪ ਨੂੰ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਲਿਖਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"ਮੁੜ-ਆਕਾਰ ਬਦਲਣ ਲਈ ਸਰਗਰਮੀਆਂ \'ਤੇ ਜ਼ੋਰ ਦਿਓ"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਪ੍ਰਯੋਗਾਤਮਿਕ ਹੈ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਤੇ ਅਸਰ ਪਾ ਸਕਦੀ ਹੈ।"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> ਦੁਆਰਾ ਓਵਰਰਾਈਡ ਕੀਤਾ"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"ਲਗਭਗ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"ਤੁਹਾਡੀ ਵਰਤੋਂ ਦੇ ਆਧਾਰ \'ਤੇ ਲਗਭਗ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਲਈ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"ਤੁਹਾਡੀ ਵਰਤੋਂ ਦੇ ਆਧਾਰ \'ਤੇ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - ਲਗਭਗ <xliff:g id="TIME">%2$s</xliff:g> ਬਾਕੀ"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - ਤੁਹਾਡੀ ਵਰਤੋਂ ਦੇ ਆਧਾਰ \'ਤੇ ਲਗਭਗ <xliff:g id="TIME">%2$s</xliff:g> ਬਾਕੀ"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ਬਾਕੀ"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਤੱਕ <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 8a74af4f3be6..762b82b92c39 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limit procesów w tle"</string> <string name="show_all_anrs" msgid="28462979638729082">"Pokaż wszystkie ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Pokaż okno Aplikacja Nie Reaguje dla aplikacji w tle"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Pokaż ostrzeżenia kanału powiadomień"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Wyświetla ostrzeżenie, gdy aplikacja publikuje powiadomienie bez prawidłowego kanału"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Wymuś zezwalanie na aplikacje w pamięci zewn."</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Pozwala na zapis aplikacji w pamięci zewnętrznej niezależnie od wartości w pliku manifestu"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Wymuś zmianę rozmiaru okien aktywności"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"To jest funkcja eksperymentalna i może wpływać na działanie urządzenia."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Nadpisana przez <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Pozostało: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Jeszcze około <xliff:g id="TIME">%1$s</xliff:g> (na podstawie Twojego sposobu korzystania)"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> do pełnego naładowania"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Zostało <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Jeszcze <xliff:g id="TIME">%1$s</xliff:g> (na podstawie Twojego sposobu korzystania)"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – pozostało około <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – jeszcze około <xliff:g id="TIME">%2$s</xliff:g> (na podstawie Twojego sposobu korzystania)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – zostało <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do pełnego naładowania"</string> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 964e39365c1d..170f396219e8 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limite do proc. 2º plano"</string> <string name="show_all_anrs" msgid="28462979638729082">"Mostrar todos os ANRS"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Exibir \"App não responde\" para app em 2º plano"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Mostrar avisos do canal de notif."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Exibe aviso na tela quando um app posta notificação sem canal válido"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forçar permissão de apps em armazenamento externo"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Qualifica apps para gravação em armazenamento externo, independentemente de valores de manifestos"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forçar atividades a serem redimensionáveis"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Este recurso é experimental e pode afetar o desempenho."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Cerca de <xliff:g id="TIME">%1$s</xliff:g> restante(s)"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Cerca de <xliff:g id="TIME">%1$s</xliff:g> restante(s) com base no seu uso"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> restante(s) até a carga completa"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> restante(s)"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> restante(s) com base no seu uso"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - cerca de <xliff:g id="TIME">%2$s</xliff:g> restante(s)"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g>: cerca de <xliff:g id="TIME">%2$s</xliff:g> restante(s) com base no seu uso"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> restante(s)"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> até a carga completa"</string> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index 5020d9f1f2c4..135a7d4a18ec 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limite proc. em 2º plano"</string> <string name="show_all_anrs" msgid="28462979638729082">"Mostrar todos os ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Mostrar erro \"Aplic. não Resp.\" p/ aplic. 2º plano"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Mostrar avisos do canal de notif."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Mostra um aviso no ecrã quando uma aplic. publica uma notific. sem um canal válido"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forçar perm. de aplicações no armazenamento ext."</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Torna qualquer aplicação elegível para ser gravada no armazenamento externo, independentemente dos valores do manifesto"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forçar as atividades a serem redimensionáveis"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Esta funcionalidade é experimental e pode afetar o desempenho."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Falta(m) cerca de <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Resta(m) cerca de <xliff:g id="TIME">%1$s</xliff:g> com base na sua utilização"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Falta(m) <xliff:g id="TIME">%1$s</xliff:g> para concluir o carregamento"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Resta(m) <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Resta(m) <xliff:g id="TIME">%1$s</xliff:g> com base na sua utilização"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – falta(m) cerca de <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – resta(m) cerca de <xliff:g id="TIME">%2$s</xliff:g> com base na sua utilização"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – resta(m) <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> até ficar totalmente carregada"</string> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 964e39365c1d..170f396219e8 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limite do proc. 2º plano"</string> <string name="show_all_anrs" msgid="28462979638729082">"Mostrar todos os ANRS"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Exibir \"App não responde\" para app em 2º plano"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Mostrar avisos do canal de notif."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Exibe aviso na tela quando um app posta notificação sem canal válido"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forçar permissão de apps em armazenamento externo"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Qualifica apps para gravação em armazenamento externo, independentemente de valores de manifestos"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forçar atividades a serem redimensionáveis"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Este recurso é experimental e pode afetar o desempenho."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Cerca de <xliff:g id="TIME">%1$s</xliff:g> restante(s)"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Cerca de <xliff:g id="TIME">%1$s</xliff:g> restante(s) com base no seu uso"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> restante(s) até a carga completa"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> restante(s)"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> restante(s) com base no seu uso"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - cerca de <xliff:g id="TIME">%2$s</xliff:g> restante(s)"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g>: cerca de <xliff:g id="TIME">%2$s</xliff:g> restante(s) com base no seu uso"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> restante(s)"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> até a carga completa"</string> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index 5204a5fdf790..5f8329488192 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limită procese fundal"</string> <string name="show_all_anrs" msgid="28462979638729082">"Afișați toate elem. ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Aplicații din fundal: afișați Aplicația nu răspunde"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Afișați avertismentele de pe canalul de notificări"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Afișează avertisment pe ecran când o aplicație postează o notificare fără canal valid"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Forțați accesul aplicațiilor la stocarea externă"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Face orice aplicație eligibilă să fie scrisă în stocarea externă, indiferent de valorile manifestului"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forțați redimensionarea activităților"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Această funcție este experimentală și poate afecta performanțele."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Valoare înlocuită de <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Timp rămas: aproximativ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"În baza utilizării, timpul aproximativ rămas este: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Timp rămas până la încărcarea completă: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Timp rămas: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"În baza utilizării, timpul rămas este: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - încă aproximativ <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – în baza utilizării, timpul aproximativ rămas este: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – timp rămas: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> până la încărcarea completă"</string> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index b132176b6e43..bd58dcf8de2d 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Лимит фоновых процессов"</string> <string name="show_all_anrs" msgid="28462979638729082">"Все ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Уведомлять о том, что приложение не отвечает"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Показывать предупреждения канала передачи оповещения"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Показывать предупреждение о новых уведомлениях приложения вне допустимого канала"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Разрешить сохранение на внешние накопители"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Разрешить сохранение приложений на внешних накопителях (независимо от значений в манифесте)"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Изменение размера в многооконном режиме"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Это экспериментальная функция, она может снизить производительность устройства."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Новая настройка: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Осталось примерно <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Осталось примерно <xliff:g id="TIME">%1$s</xliff:g> при текущем уровне использования"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Ещё <xliff:g id="TIME">%1$s</xliff:g> до полной зарядки"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Осталось: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Осталось <xliff:g id="TIME">%1$s</xliff:g> при текущем уровне использования"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – осталось примерно <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> (осталось примерно <xliff:g id="TIME">%2$s</xliff:g> при текущем уровне использования)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g>, осталось: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до полной зарядки"</string> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 7cd65f447536..6d49fe6fe212 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"පසුබිම් ක්රියාවලි සීමාව"</string> <string name="show_all_anrs" msgid="28462979638729082">"සියලුම ANR පෙන්වන්න"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"පසුබිම් යෙදුම් වලට යෙදුම ප්රතිචාර නොදක්වයි කවුළුව පෙන්වන්න"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"දැනුම්දීම් නාලිකා අනතුරු ඇඟවීම් පෙන්."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"යෙදුමක් වලංගු නාලිකාවකින් තොරව දැනුම්දීමක් පළ කරන විට තිරය-මත අනතුරු ඇඟවීමක් සංදර්ශනය කරයි."</string> <string name="force_allow_on_external" msgid="3215759785081916381">"බාහිර මත යෙදුම් ඉඩ දීම බල කරන්න"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"මැනිෆෙස්ට් අගයන් නොසලකා, ඕනෑම යෙදුමක් බාහිර ගබඩාවට ලිවීමට සුදුසුකම් ලබා දෙයි"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"ක්රියාකාරකම් ප්රතිප්රමාණ කළ හැකි බවට බල කරන්න"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"මෙම විශේෂාංගය පරීක්ෂණාත්මක සහ ඇතැම් විට ක්රියාකාරිත්වයට බලපෑ හැක."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> මගින් ඉක්මවන ලදී"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"<xliff:g id="TIME">%1$s</xliff:g> පමණ ඉතිරියි"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"ඔබගේ භාවිතය මත පදනම්ව <xliff:g id="TIME">%1$s</xliff:g> පමණ ඉතිරිව ඇත"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"පූර්ණව ආරෝපණය වන තෙක් <xliff:g id="TIME">%1$s</xliff:g> ඉතිරියි"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"ඉතිරි <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"ඔබගේ භාවිතය මත පදනම්ව <xliff:g id="TIME">%1$s</xliff:g> ඉතිරිව ඇත"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>ක් පමණ ඇත"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - ඔබගේ භාවිතය මත පදනම්ව <xliff:g id="TIME">%2$s</xliff:g> පමණ ඉතිරිව ඇත"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - ඉතිරි <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> සම්පූර්ණයෙන් ආරෝපණය වන තෙක්"</string> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index 8c77e84e3a6d..2c6d1c7750f0 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limit procesov na pozadí"</string> <string name="show_all_anrs" msgid="28462979638729082">"Zobrazovať všetky ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Zobrazovať dialóg „Aplikácia neodpovedá“ aj pre aplikácie na pozadí"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Zobraziť hlásenia kanála upozornení"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Zobrazuje varovné hlásenie na obrazovke, keď aplikácia zverejní upozornenie bez platného kanála"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Vynútiť povolenie aplikácií na externom úložisku"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Umožňuje zapísať akúkoľvek aplikáciu do externého úložiska bez ohľadu na hodnoty v manifeste"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Vynútiť možnosť zmeny veľkosti aktivít"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Funkcia je experimentálna a môže mať vplyv na výkonnosť."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Prekonané predvoľbou <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Približný zostávajúci čas: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Zostáva približne <xliff:g id="TIME">%1$s</xliff:g> v závislosti od intenzity využitia"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Zostávajúci čas do úplného nabitia: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Zostávajúci čas: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Zostáva <xliff:g id="TIME">%1$s</xliff:g> v závislosti od intenzity využitia"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – približný zostávajúci čas: <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – zostáva približne <xliff:g id="TIME">%2$s</xliff:g> v závislosti od intenzity využitia"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – zostávajúci čas: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do úplného nabitia"</string> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 9bda1bcbfb77..ed98de732192 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Omejitev postopkov v ozadju"</string> <string name="show_all_anrs" msgid="28462979638729082">"Pokaži okna neodzivanj"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Prikaz pogovornega okna za neodzivanje aplikacije v ozadju"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Pokaži opoz. kan. za obv."</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Na zaslonu se pokaže opozorilo, ko aplikacija objavi obvestilo brez veljavnega kanala"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Vsili omogočanje aplikacij v zunanji shrambi"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Poskrbi, da je ne glede na vrednosti v manifestu mogoče vsako aplikacijo zapisati v zunanjo shrambo"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Vsili povečanje velikosti za aktivnosti"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"To je preskusna funkcija in lahko vpliva na učinkovitost delovanja."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Preglasila nastavitev: <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Še približno <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Glede na način uporabe imate na voljo še približno <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Še <xliff:g id="TIME">%1$s</xliff:g> do polne napolnjenosti"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Še <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Glede na način uporabe imate na voljo še <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – še približno <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – glede na način uporabe imate na voljo še približno <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – še <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do napolnjenosti"</string> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index ea604fec26b2..416df0947fbb 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Kufizimi i proceseve në sfond"</string> <string name="show_all_anrs" msgid="28462979638729082">"Shfaq raportet ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Shfaq raportet ANR (Aplikacioni nuk përgjigjet) për aplikacionet në sfond"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Shfaq paralajmërimet e kanalit të njoftimeve"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Shfaq paralajmërimin në ekran kur një aplikacion poston një njoftim pa një kanal të vlefshëm"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Detyro lejimin në hapësirën e jashtme"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Bën që çdo aplikacion të jetë i përshtatshëm për t\'u shkruar në hapësirën ruajtëse të jashtme, pavarësisht nga vlerat e manifestit"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Detyro madhësinë e ndryshueshme për aktivitetet"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ky funksion është eksperimental dhe mund të ndikojë në veprimtari."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Mbivendosur nga <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Rreth <xliff:g id="TIME">%1$s</xliff:g> të mbetura"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Rreth <xliff:g id="TIME">%1$s</xliff:g> të mbetura bazuar në përdorimin tënd"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> të mbetura deri në ngarkimin e plotë"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> të mbetura"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> të mbetura bazuar në përdorimin tënd"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - rreth <xliff:g id="TIME">%2$s</xliff:g> të mbetura"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - rreth <xliff:g id="TIME">%2$s</xliff:g> të mbetura bazuar në përdorimin tënd"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> të mbetura"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> derisa të mbushet plotësisht"</string> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 0e20e4f9533b..09086992e424 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Ограничење позадинских процеса"</string> <string name="show_all_anrs" msgid="28462979638729082">"Прикажи све ANR-ове"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Прикажи дијалог Апликација не реагује за апликације у позадини"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Приказуј упозорења због канала за обавештења"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Приказује упозорење на екрану када апликација постави обавештење без важећег канала"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Принудно дозволи апликације у спољној"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Омогућава уписивање свих апликација у спољну меморију, без обзира на вредности манифеста"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Принудно омогући промену величине активности"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ова функција је експериментална и може да утиче на квалитет рада."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Замењује га <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Још око <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"На основу потрошње имате још отприлике <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> до потпуног пуњења"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Преостало време: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"На основу потрошње имате још <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – остало је око <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – на основу потрошње имате још отприлике <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"Преостало је <xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до потпуног пуњења"</string> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index c95df1bc6d20..5600540c8b19 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Begränsa bakgrundsprocess"</string> <string name="show_all_anrs" msgid="28462979638729082">"Visa alla som inte svarar"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Visa dialogrutan om att appen inte svarar för bakgrundsappar"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Visa varningar om aviseringskanal"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Visa varningar på skärmen när en app lägger upp en avisering utan en giltig kanal"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Tillåt appar i externt lagringsutrymme"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Allar appar kan skrivas till extern lagring, oavsett manifestvärden"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Framtvinga storleksanpassning för aktiviteter"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Den här funktionen är experimentell och kan påverka prestandan."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Har åsidosatts av <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Cirka <xliff:g id="TIME">%1$s</xliff:g> återstår"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Cirka <xliff:g id="TIME">%1$s</xliff:g> kvar utifrån din användning"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Batteriet är fulladdat om <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> kvar"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> kvar utifrån din användning"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – cirka <xliff:g id="TIME">%2$s</xliff:g> kvar"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – cirka <xliff:g id="TIME">%2$s</xliff:g> kvar utifrån din användning"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> kvar"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> tills det är fulladdat"</string> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 5098422d79ef..bc50f33ec4d6 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Kiwango cha mchakato wa mandari nyuma"</string> <string name="show_all_anrs" msgid="28462979638729082">"Onyesha ANR zote"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Onyesha kisanduku kidadisi cha Programu Haiitikii kwa programu za usuli"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Onyesha arifa za maonyo ya kituo"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Huonyesha onyo kwenye skrini programu inapochapisha arifa bila kituo sahihi."</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Lazima uruhusu programu kwenye hifadhi ya nje"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Huruhusu programu yoyote iwekwe kwenye hifadhi ya nje, bila kujali thamani za faili ya maelezo"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Lazimisha shughuli ziweze kubadilishwa ukubwa"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Kipengele hiki ni cha majaribio na huenda kikaathiri utendaji wa kifaa chako."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Imetanguliwa na <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Zimesalia takribani <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Takriban <xliff:g id="TIME">%1$s</xliff:g> zimesalia kulingana na matumizi yako"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Imebaki <xliff:g id="TIME">%1$s</xliff:g> chaji ijae"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Zimesalia <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> zimesalia kulingana na matumizi yako"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - imesalia takribani <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - takriban <xliff:g id="TIME">%2$s</xliff:g> zimesalia kulingana na matumizi yako"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"Imechaji <xliff:g id="LEVEL">%1$s</xliff:g> - Zimesalia <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> hadi ijae chaji"</string> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index b2cf8dc10660..40a5ce036e46 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"பின்புலச் செயல்முறை வரம்பு"</string> <string name="show_all_anrs" msgid="28462979638729082">"எல்லா ANRகளையும் காட்டு"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"பின்புலப் பயன்பாடுகளுக்குப் பயன்பாடு பதிலளிக்கவில்லை என்ற உரையாடலைக் காட்டு"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"அறிவிப்புச் சேனல் எச்சரிக்கைகளைக் காட்டு"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"பயன்பாடானது சரியான சேனல் இல்லாமல் அறிவிப்பை இடுகையிடும் போது, திரையில் எச்சரிக்கையைக் காட்டும்"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"பயன்பாடுகளை வெளிப்புறச் சேமிப்பிடத்தில் அனுமதி"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"மேனிஃபெஸ்ட் மதிப்புகளைப் பொருட்படுத்தாமல், எல்லா பயன்பாட்டையும் வெளிப்புறச் சேமிப்பிடத்தில் எழுத அனுமதிக்கும்"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"செயல்பாடுகளை அளவுமாறக்கூடியதாக அமை"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"இது சோதனை முறையிலான அம்சம், இது செயல்திறனைப் பாதிக்கலாம்."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> மூலம் மேலெழுதப்பட்டது"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"கிட்டத்தட்ட <xliff:g id="TIME">%1$s</xliff:g> உள்ளது"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"உபயோகத்தின் அடிப்படையில் கிட்டத்தட்ட <xliff:g id="TIME">%1$s</xliff:g> மீதமுள்ளது"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"முழு சார்ஜாக <xliff:g id="TIME">%1$s</xliff:g> ஆகும்"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> மீதமுள்ளது"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"உபயோகத்தின் அடிப்படையில் <xliff:g id="TIME">%1$s</xliff:g> மீதமுள்ளது"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - கிட்டத்தட்ட <xliff:g id="TIME">%2$s</xliff:g> மீதமுள்ளது"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - உபயோகத்தின் அடிப்படையில் கிட்டத்தட்ட <xliff:g id="TIME">%2$s</xliff:g> மீதமுள்ளது"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> மீதமுள்ளது"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - முழு சார்ஜாக <xliff:g id="TIME">%2$s</xliff:g> ஆகும்"</string> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index ef47b6ad5dd5..374162b322c2 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"నేపథ్య ప్రాసెస్ పరిమితి"</string> <string name="show_all_anrs" msgid="28462979638729082">"అన్ని ANRలను చూపు"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"నేపథ్య అనువర్తనాల కోసం అనువర్తనం ప్రతిస్పందించడం లేదు డైలాగ్ను చూపు"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"ఛానెల్ హెచ్చరికల నోటిఫికేషన్ను చూపు"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"చెల్లుబాటు అయ్యే ఛానెల్ లేకుండా అనువర్తనం నోటిఫికేషన్ను పోస్ట్ చేస్తున్నప్పుడు స్క్రీన్పై హెచ్చరికను చూపిస్తుంది"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"అనువర్తనాలను బాహ్య నిల్వలో నిర్బంధంగా అనుమతించు"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ఏ అనువర్తనాన్ని అయినా మానిఫెస్ట్ విలువలతో సంబంధం లేకుండా బాహ్య నిల్వలో వ్రాయడానికి అనుమతిస్తుంది"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"కార్యాచరణలను పరిమాణం మార్చగలిగేలా నిర్బంధించు"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ఈ లక్షణం ప్రయోగాత్మకమైనది మరియు పనితీరుపై ప్రభావం చూపవచ్చు."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> ద్వారా భర్తీ చేయబడింది"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"మిగిలి ఉన్న సమయం, <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"మీ వినియోగం ఆధారంగా సుమారు <xliff:g id="TIME">%1$s</xliff:g> సమయం మిగిలి ఉంది"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"పూర్తిగా ఛార్జ్ కావడానికి <xliff:g id="TIME">%1$s</xliff:g> పడుతుంది"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> మిగిలి ఉంది"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"మీ వినియోగం ఆధారంగా <xliff:g id="TIME">%1$s</xliff:g> సమయం మిగిలి ఉంది"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> పని చేస్తుంది"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - మీ వినియోగం ఆధారంగా సుమారు <xliff:g id="TIME">%2$s</xliff:g> సమయం మిగిలి ఉంది"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> మిగిలి ఉంది"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>లో పూర్తిగా ఛార్జ్ అవుతుంది"</string> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 61681acbeb96..465d3ad6c382 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -163,7 +163,7 @@ <string name="oem_unlock_enable" msgid="6040763321967327691">"การปลดล็อก OEM"</string> <string name="oem_unlock_enable_summary" msgid="4720281828891618376">"อนุญาตให้ปลดล็อกตัวโหลดการเปิดเครื่อง"</string> <string name="confirm_enable_oem_unlock_title" msgid="4802157344812385674">"อนุญาตการปลดล็อก OEM ไหม"</string> - <string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"คำเตือน: คุณลักษณะการปกป้องอุปกรณ์จะไม่ทำงานบนอุปกรณ์นี้ขณะที่การตั้งค่านี้เปิดอยู่"</string> + <string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"คำเตือน: ฟีเจอร์การปกป้องอุปกรณ์จะไม่ทำงานบนอุปกรณ์นี้ขณะที่การตั้งค่านี้เปิดอยู่"</string> <string name="mock_location_app" msgid="7966220972812881854">"เลือกแอปจำลองตำแหน่ง"</string> <string name="mock_location_app_not_set" msgid="809543285495344223">"ไม่ได้ตั้งค่าแอปจำลองตำแหน่ง"</string> <string name="mock_location_app_set" msgid="8966420655295102685">"แอปจำลองตำแหน่ง: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> @@ -211,7 +211,7 @@ <string name="dev_settings_warning_message" msgid="2298337781139097964">"การตั้งค่านี้มีไว้เพื่อการพัฒนาเท่านั้น จึงอาจทำให้อุปกรณ์และแอปพลิเคชันที่มีอยู่เสียหายหรือทำงานผิดพลาดได้"</string> <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"ยืนยันแอปพลิเคชันผ่าน USB"</string> <string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"ตรวจสอบแอปพลิเคชันที่ติดตั้งผ่าน ADB/ADT เพื่อตรวจดูพฤติกรรมที่เป็นอันตราย"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"ปิดใช้คุณลักษณะการควบคุมระดับเสียงของอุปกรณ์อื่นผ่านบลูทูธในกรณีที่มีปัญหาเกี่ยวกับระดับเสียงของอุปกรณ์ระยะไกล เช่น ระดับเสียงที่ดังเกินไปหรือระดับเสียงที่ไม่มีการควบคุม"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"ปิดใช้ฟีเจอร์การควบคุมระดับเสียงของอุปกรณ์อื่นผ่านบลูทูธในกรณีที่มีปัญหาเกี่ยวกับระดับเสียงของอุปกรณ์ระยะไกล เช่น ระดับเสียงที่ดังเกินไปหรือระดับเสียงที่ไม่มีการควบคุม"</string> <string name="bluetooth_enable_inband_ringing_summary" msgid="2787866074741784975">"ให้เสียงเรียกเข้าในโทรศัพท์เล่นในชุดหูฟังบลูทูธ"</string> <string name="enable_terminal_title" msgid="95572094356054120">"เทอร์มินัลในตัวเครื่อง"</string> <string name="enable_terminal_summary" msgid="67667852659359206">"เปิดใช้งานแอปเทอร์มินัลที่ให้การเข้าถึงเชลล์ในตัวเครื่อง"</string> @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"ขีดจำกัดกระบวนการพื้นหลัง"</string> <string name="show_all_anrs" msgid="28462979638729082">"แสดง ANR ทั้งหมด"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"แสดงหน้าต่างแอปไม่ตอบสนอง สำหรับแอปพื้นหลัง"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"แสดงคำเตือนจากช่องทางการแจ้งเตือน"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"แสดงคำเตือนบนหน้าจอเมื่อแอปโพสต์การแจ้งเตือนโดยไม่มีช่องทางที่ถูกต้อง"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"บังคับให้แอปสามารถใช้ที่เก็บภายนอก"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"ทำให้สามารถเขียนแอปใดๆ ก็ตามไปยังพื้นที่เก็บข้อมูลภายนอกได้ โดยไม่คำนึงถึงค่าในไฟล์ Manifest"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"บังคับให้กิจกรรมปรับขนาดได้"</string> @@ -310,7 +308,7 @@ <string name="convert_to_file_encryption_enabled" msgid="2861258671151428346">"แปลง…"</string> <string name="convert_to_file_encryption_done" msgid="7859766358000523953">"เข้ารหัสไฟล์แล้ว"</string> <string name="title_convert_fbe" msgid="1263622876196444453">"การแปลงเป็นการเข้ารหัสตามไฟล์"</string> - <string name="convert_to_fbe_warning" msgid="6139067817148865527">"แปลงพาร์ทิชันข้อมูลเป็นการเข้ารหัสแบบไฟล์\n !!คำเตือน!! การดำเนินการนี้จะลบข้อมูลทั้งหมดของคุณ\n คุณลักษณะนี้เป็นแบบอัลฟา และอาจทำงานไม่เป็นปกติ\n กด \"ลบและแปลง...\" เพื่อดำเนินการต่อ"</string> + <string name="convert_to_fbe_warning" msgid="6139067817148865527">"แปลงพาร์ทิชันข้อมูลเป็นการเข้ารหัสแบบไฟล์\n !!คำเตือน!! การดำเนินการนี้จะลบข้อมูลทั้งหมดของคุณ\n ฟีเจอร์นี้เป็นแบบอัลฟา และอาจทำงานไม่เป็นปกติ\n กด \"ลบและแปลง...\" เพื่อดำเนินการต่อ"</string> <string name="button_convert_fbe" msgid="5152671181309826405">"ลบและแปลง…"</string> <string name="picture_color_mode" msgid="4560755008730283695">"โหมดสีของรูปภาพ"</string> <string name="picture_color_mode_desc" msgid="1141891467675548590">"ใช้ sRGB"</string> @@ -320,18 +318,15 @@ <string name="daltonizer_mode_protanomaly" msgid="8424148009038666065">"ตาบอดจางสีแดง (สีแดง/เขียว)"</string> <string name="daltonizer_mode_tritanomaly" msgid="481725854987912389">"ตาบอดจางสีน้ำเงิน (สีน้ำเงิน/เหลือง)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="5800761362678707872">"การแก้สี"</string> - <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"คุณลักษณะนี้เป็นแบบทดลองและอาจส่งผลต่อประสิทธิภาพการทำงาน"</string> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"ฟีเจอร์นี้เป็นแบบทดลองและอาจส่งผลต่อประสิทธิภาพการทำงาน"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"แทนที่โดย <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"อีกประมาณ <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"เหลืออีกราว <xliff:g id="TIME">%1$s</xliff:g> ขึ้นอยู่กับการใช้งานของคุณ"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"อีก <xliff:g id="TIME">%1$s</xliff:g> จึงจะชาร์จเต็ม"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"เหลืออีก <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"เหลืออีก <xliff:g id="TIME">%1$s</xliff:g> ขึ้นอยู่กับการใช้งานของคุณ"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - เหลือเวลาประมาณ <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - เหลืออีกราว <xliff:g id="TIME">%2$s</xliff:g> ขึ้นอยู่กับการใช้งานของคุณ"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - เหลืออีก <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> จนกว่าจะชาร์จเต็ม"</string> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index d064f593be8f..7b9bc5b6adf1 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Limitasyon ng proseso sa background"</string> <string name="show_all_anrs" msgid="28462979638729082">"Ipakita ang lahat ng ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"App Not Responding dialog para sa background apps"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Ipakita ang mga babala sa notification channel"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Nagpapakita ng babala sa screen kapag nag-post ang app ng notification nang walang wastong channel"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Pwersahang payagan ang mga app sa external"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Ginagawang kwalipikado ang anumang app na mailagay sa external na storage, anuman ang mga value ng manifest"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Sapilitang gawing resizable ang mga aktibidad"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Ang feature na ito ay pinag-eeksperimentuhan at maaaring makaapekto sa performance."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Na-override ng <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Humigit-kumulang <xliff:g id="TIME">%1$s</xliff:g> ang natitira"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Humigit-kumulang <xliff:g id="TIME">%1$s</xliff:g> ang natitira batay sa iyong paggamit"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> ang natitira bago makumpleto ang charge"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> pa"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> ang natitira batay sa iyong paggamit"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - humigit-kumulang <xliff:g id="TIME">%2$s</xliff:g> pa ang natitira"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - humigit-kumulang <xliff:g id="TIME">%2$s</xliff:g> ang natitira batay sa iyong paggamit"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> pa"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> hanggang sa makumpleto ang charge"</string> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index 7fb976089d23..dc504f5a7d69 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Arka plan işlem sınırı"</string> <string name="show_all_anrs" msgid="28462979638729082">"Tüm ANR\'leri göster"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Arka plan uygulamalar için Uygulama Yanıt Vermiyor mesajını göster"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Bildirim kanalı uyarılarını göster"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Bir uygulama geçerli kanal olmadan bildirim yayınladığında ekranda uyarı gösterir"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Harici birimdeki uygulamalara izin vermeye zorla"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Manifest değerlerinden bağımsız olarak uygulamaları harici depolamaya yazmak için uygun hale getirir"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Etkinlikleri yeniden boyutlandırılabilmeye zorla"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Bu özellik deneyseldir ve performansı etkileyebilir."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> tarafından geçersiz kılındı"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Yaklaşık <xliff:g id="TIME">%1$s</xliff:g> kaldı"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Kullanımınıza dayalı olarak yaklaşık <xliff:g id="TIME">%1$s</xliff:g> kaldı"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Tam olarak şarj olmasına <xliff:g id="TIME">%1$s</xliff:g> kaldı"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> kaldı"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Kullanımınıza dayalı olarak <xliff:g id="TIME">%1$s</xliff:g> kaldı"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - yaklaşık <xliff:g id="TIME">%2$s</xliff:g> kaldı"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - kullanımınıza dayalı olarak yaklaşık <xliff:g id="TIME">%2$s</xliff:g> kaldı"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> kaldı"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tam şarj olmasına <xliff:g id="TIME">%2$s</xliff:g> kaldı"</string> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index 26b70f3727a0..a1855b039bfd 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Обмеження фон. процесів"</string> <string name="show_all_anrs" msgid="28462979638729082">"Показувати всі ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Сповіщати, коли додаток не відповідає"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Показувати застереження про канал"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"З’являється застереження, коли додаток надсилає сповіщення через недійсний канал"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Примусово записувати додатки в зовнішню пам’ять"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Можна записувати додатки в зовнішню пам’ять, незалежно від значень у маніфесті"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Примусово масштабувати активність"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Це експериментальна функція. Вона може вплинути на продуктивність."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Замінено на <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Залишилося близько <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"На основі використання залишилося близько <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"До повного зарядження залишилося <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Залишилося <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"На основі використання залишилося <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – ще <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> – на основі використання залишилося близько <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – залишилося <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до повного заряду"</string> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index eda9974fbe30..ee04be3dab3e 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"پس منظر پروسیس کی حد"</string> <string name="show_all_anrs" msgid="28462979638729082">"سبھی ANRs کو دکھائیں"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"پس منظر کی ایپس کیلئے ایپ جواب نہیں دے رہی ہے ڈائلاگ دکھائیں"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"چینل کی اطلاعی تنبیہات دکھائیں"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"کسی ایپ کی طرف سے درست چینل کے بغیر اطلاع پوسٹ ہونے پر آن اسکرین تنبیہ ڈسپلے کرتا ہے"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"بیرونی پر ایپس کو زبردستی اجازت دیں"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"manifest اقدار سے قطع نظر، کسی بھی ایپ کو بیرونی اسٹوریج پر لکھے جانے کا اہل بناتا ہے"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"سرگرمیوں کو ری سائز ایبل بنائیں"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"یہ خصوصیت تجرباتی ہے اور اس کی وجہ سے کاکردگی متاثر ہو سکتی ہے۔"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> کے ذریعہ منسوخ کردیا گیا"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"تقریبًا <xliff:g id="TIME">%1$s</xliff:g> باقی ہے"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"آپ کے استعمال کی بنیاد پر تقریباً <xliff:g id="TIME">%1$s</xliff:g> باقی ہے"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"پوری طرح چارج ہونے میں <xliff:g id="TIME">%1$s</xliff:g> باقی ہے"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> باقی ہے"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"آپ کے استعمال کی بنیاد پر <xliff:g id="TIME">%1$s</xliff:g> باقی ہے"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - تقریباً <xliff:g id="TIME">%2$s</xliff:g> باقی ہے"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - آپ کے استعمال کی بنیاد پر تقریباً <xliff:g id="TIME">%2$s</xliff:g> باقی ہے"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> باقی ہے"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> پوری طرح چارج ہونے تک"</string> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index f15741656678..f96f915ad698 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Fondagi jarayonlarni cheklash"</string> <string name="show_all_anrs" msgid="28462979638729082">"Hamma ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Ilova javob bermayotgani haqida xabar qilish"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Xabarlar kanali ogohlantirishlarini ko‘rsatish"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Yaroqli kanalsiz yuborilgan yangi ilova xabarnomalari haqida ogohlantirishlarni ko‘rsatish"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Tashqi xotira qurilmasidagi ilova dasturlariga majburiy ruxsat berish"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Manifest qiymatidan qat’i nazar istalgan ilovani tashqi xotiraga saqlash imkonini beradi"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Harakatlarni moslashuvchan o‘lchamga keltirish"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Bu funksiya tajribaviy bo‘lib, u qurilma unumdorligiga ta’sir qilishi mumkin."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"<xliff:g id="TITLE">%1$s</xliff:g> bilan almashtirildi"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Taxminan <xliff:g id="TIME">%1$s</xliff:g> qoldi"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Joriy holatda taxminan <xliff:g id="TIME">%1$s</xliff:g> qoldi"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"To‘lishiga <xliff:g id="TIME">%1$s</xliff:g> qoldi"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> qoldi"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Joriy holatda <xliff:g id="TIME">%1$s</xliff:g> qoldi"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> – taxminan <xliff:g id="TIME">%2$s</xliff:g> qoldi"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> (joriy holatda taxminan <xliff:g id="TIME">%2$s</xliff:g> qoldi)"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> qoldi"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> ichida to‘ladi"</string> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index 973b0107953d..d7e95fdc0eb2 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Giới hạn quá trình nền"</string> <string name="show_all_anrs" msgid="28462979638729082">"Hiển thị tất cả ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Hiện hộp thoại Ứng dụng ko đáp ứng cho ứng dụng nền"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Hiện cảnh báo kênh th.báo"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Hiện cảnh báo trên m.hình khi ƯD đăng th.báo ko có kênh hợp lệ"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Buộc cho phép các ứng dụng trên bộ nhớ ngoài"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Giúp mọi ứng dụng đủ điều kiện để được ghi vào bộ nhớ ngoài, bất kể giá trị tệp kê khai là gì"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Buộc các hoạt động có thể thay đổi kích thước"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Tính năng này là tính năng thử nghiệm và có thể ảnh hưởng đến hoạt động."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Bị ghi đè bởi <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Còn khoảng <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Còn khoảng <xliff:g id="TIME">%1$s</xliff:g> dựa trên mức sử dụng của bạn"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Còn <xliff:g id="TIME">%1$s</xliff:g> cho tới khi được sạc đầy"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"Còn lại <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"Còn <xliff:g id="TIME">%1$s</xliff:g> dựa trên mức sử dụng của bạn"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - còn khoảng <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - còn khoảng <xliff:g id="TIME">%2$s</xliff:g> dựa trên mức sử dụng của bạn"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - còn lại <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> cho tới khi được sạc đầy"</string> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 68dd28da1a23..008dceac5802 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"后台进程限制"</string> <string name="show_all_anrs" msgid="28462979638729082">"显示所有“应用无响应”(ANR)"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"为后台应用显示“应用无响应”对话框"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"显示通知渠道警告"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"当应用未经有效渠道发布通知时,在屏幕上显示警告"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"强制允许将应用写入外部存储设备"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"允许将任何应用写入外部存储设备(无论清单值是什么)"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"强制将活动设为可调整大小"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"这是实验性功能,性能可能不稳定。"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"已被“<xliff:g id="TITLE">%1$s</xliff:g>”覆盖"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"还剩大约 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"根据您的使用情况,大约还可使用 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"还需 <xliff:g id="TIME">%1$s</xliff:g>充满电"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"还可用 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"根据您的使用情况,大约还可使用 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - 大约还剩 <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - 根据您的使用情况,大约还可使用 <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - 还可用 <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - 还需 <xliff:g id="TIME">%2$s</xliff:g>充满"</string> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 1b2e78285169..d857cc8e43f1 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"背景處理程序限制"</string> <string name="show_all_anrs" msgid="28462979638729082">"顯示所有 ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"顯示背景應用程式的「應用程式無回應」對話框"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"顯示通知渠道警告"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"當應用程式未經有效渠道發佈通知時,在螢幕上顯示警告"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"強制允許應用程式寫入到外部儲存空間"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"在任何資訊清單值下,允許將所有符合資格的應用程式寫入到外部儲存完間"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"強制可變更活動尺寸"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"這是實驗性功能,效能尚待改善。"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"已由「<xliff:g id="TITLE">%1$s</xliff:g>」覆寫"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"剩餘約 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"根據您的使用情況,剩餘約 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g>後就能充滿電"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"尚餘 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"根據您的使用情況,剩餘 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - 剩餘約 <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - 根據您的使用情況,剩餘約 <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - 尚餘 <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - 還需 <xliff:g id="TIME">%2$s</xliff:g>才能充滿電"</string> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 294b12f99e60..0268b0c48773 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"背景處理程序限制"</string> <string name="show_all_anrs" msgid="28462979638729082">"顯示所有無回應程式"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"為背景應用程式顯示「應用程式無回應」對話方塊"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"顯示通知管道警告"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"當應用程式未經有效管道發佈通知時,在畫面上顯示警告"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"強制允許將應用程式寫入外部儲存空間"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"允許將任何應用程式寫入外部儲存空間 (無論資訊清單值為何)"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"將活動強制設為可調整大小"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"這是一項實驗性功能,可能會對效能造成影響。"</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"已改為<xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"還有大約 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"根據你的使用情形,剩餘時間大約還有 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"再過 <xliff:g id="TIME">%1$s</xliff:g>就能完成充電"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"還剩 <xliff:g id="TIME">%1$s</xliff:g>"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"根據你的使用情形,剩餘時間還有 <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - 約剩 <xliff:g id="TIME">%2$s</xliff:g>"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - 根據你的使用情形,剩餘時間大約還有 <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - 還剩 <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>後充飽"</string> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 904bd2c54cce..06b7ccf02327 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -272,10 +272,8 @@ <string name="app_process_limit_title" msgid="4280600650253107163">"Isilinganiso senqubo yesithombe sanemuva"</string> <string name="show_all_anrs" msgid="28462979638729082">"Bonisa wonke ama-ANR"</string> <string name="show_all_anrs_summary" msgid="641908614413544127">"Boniso idayalogi Yohlelo Lokusebenza Olungasabeli kwizinhlelo zokusebenza zasemuva"</string> - <!-- no translation found for show_notification_channel_warnings (1399948193466922683) --> - <skip /> - <!-- no translation found for show_notification_channel_warnings_summary (5536803251863694895) --> - <skip /> + <string name="show_notification_channel_warnings" msgid="1399948193466922683">"Bonisa izexwayiso zesiteshi sesaziso"</string> + <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"Ibonisa isexwayiso esikusikrini uma uhlelo lokusebenza luthumela isaziso ngaphandle kwesiteshi esivumelekile"</string> <string name="force_allow_on_external" msgid="3215759785081916381">"Phoqelela ukuvumela izinhlelo zokusebenza ngaphandle"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Yenza noma uluphi uhlelo lokusebenza lifaneleke ukuthi libhalwe kusitoreji sangaphandle, ngaphandle kwamavelu we-manifest"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Imisebenzi yamandla izonikezwa usayizi omusha"</string> @@ -323,15 +321,12 @@ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="3484969015295282911">"Lesi sici esesilingo futhi singathinta ukusebenza."</string> <string name="daltonizer_type_overridden" msgid="3116947244410245916">"Igitshezwe ngaphezulu yi-<xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="845431008899029842">"Cishe u-<xliff:g id="TIME">%1$s</xliff:g> osele"</string> - <!-- no translation found for power_remaining_duration_only_enhanced (5992456722677973678) --> - <skip /> + <string name="power_remaining_duration_only_enhanced" msgid="5992456722677973678">"Cishe kusele okungu-<xliff:g id="TIME">%1$s</xliff:g> kusukela ekusetshenzisweni kwakho"</string> <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> kushiywe ishaja"</string> <string name="power_remaining_duration_only_short" msgid="5329694252258605547">"<xliff:g id="TIME">%1$s</xliff:g> esisele"</string> - <!-- no translation found for power_remaining_duration_only_short_enhanced (7450425624026394823) --> - <skip /> + <string name="power_remaining_duration_only_short_enhanced" msgid="7450425624026394823">"<xliff:g id="TIME">%1$s</xliff:g> esele kusukela ekusetshenzisweni kwakho"</string> <string name="power_discharging_duration" msgid="2843747179907396142">"<xliff:g id="LEVEL">%1$s</xliff:g> - cishe ngu-<xliff:g id="TIME">%2$s</xliff:g> osele"</string> - <!-- no translation found for power_discharging_duration_enhanced (4401782117770255046) --> - <skip /> + <string name="power_discharging_duration_enhanced" msgid="4401782117770255046">"<xliff:g id="LEVEL">%1$s</xliff:g> - cishe ngu-<xliff:g id="TIME">%2$s</xliff:g> osele kusukela ekusetshenzisweni kwakho"</string> <string name="power_discharging_duration_short" msgid="4192244429001842403">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> okusele"</string> <string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> kuze ligcwale ngokuphelele"</string> diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 039a81d801f9..fb2ba7e1a5a8 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -89,6 +89,19 @@ <!-- Summary for Connected wifi network without internet --> <string name="wifi_connected_no_internet">Connected, no Internet</string> + <!-- Speed label for very slow network speed --> + <string name="speed_label_very_slow">Very Slow</string> + <!-- Speed label for slow network speed --> + <string name="speed_label_slow">Slow</string> + <!-- Speed label for okay network speed --> + <string name="speed_label_okay">Okay</string> + <!-- Speed label for medium network speed --> + <string name="speed_label_medium">Medium</string> + <!-- Speed label for fast network speed --> + <string name="speed_label_fast">Fast</string> + <!-- Speed label for very fast network speed --> + <string name="speed_label_very_fast">Very Fast</string> + <!-- Bluetooth settings. Message when a device is disconnected --> <string name="bluetooth_disconnected">Disconnected</string> <!-- Bluetooth settings. Message when disconnecting from a device --> diff --git a/packages/SettingsLib/res/values/styles.xml b/packages/SettingsLib/res/values/styles.xml index 3f312f4efda3..b7ea1d498ce1 100644 --- a/packages/SettingsLib/res/values/styles.xml +++ b/packages/SettingsLib/res/values/styles.xml @@ -21,4 +21,9 @@ <style name="TextAppearanceMedium"> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> </style> + + <style name="preference_icon_frame"> + <item name="android:layout_marginStart">-4dp</item> + <item name="android:minWidth">60dp</item> + </style> </resources> diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/BottomLabelLayout.java b/packages/SettingsLib/src/com/android/settingslib/graph/BottomLabelLayout.java new file mode 100644 index 000000000000..8161dd4bb934 --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/graph/BottomLabelLayout.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2017 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.settingslib.graph; + +import android.annotation.Nullable; +import android.content.Context; +import android.support.annotation.VisibleForTesting; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.View; +import android.widget.LinearLayout; + +import com.android.settingslib.R; + +/** + * An extension of LinearLayout that automatically switches to vertical + * orientation when it can't fit its child views horizontally. + * + * Main logic in this class comes from {@link android.support.v7.widget.ButtonBarLayout}. + * Compared with {@link android.support.v7.widget.ButtonBarLayout}, this layout won't reverse + * children's order and won't update the minimum height + */ +public class BottomLabelLayout extends LinearLayout { + private static final String TAG = "BottomLabelLayout"; + + public BottomLabelLayout(Context context, + @Nullable AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + final boolean isStacked = isStacked(); + boolean needsRemeasure = false; + + // If we're not stacked, make sure the measure spec is AT_MOST rather + // than EXACTLY. This ensures that we'll still get TOO_SMALL so that we + // know to stack the buttons. + final int initialWidthMeasureSpec; + if (!isStacked && MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY) { + initialWidthMeasureSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.AT_MOST); + + // We'll need to remeasure again to fill excess space. + needsRemeasure = true; + } else { + initialWidthMeasureSpec = widthMeasureSpec; + } + + super.onMeasure(initialWidthMeasureSpec, heightMeasureSpec); + if (!isStacked) { + final int measuredWidth = getMeasuredWidthAndState(); + final int measuredWidthState = measuredWidth & View.MEASURED_STATE_MASK; + + if (measuredWidthState == View.MEASURED_STATE_TOO_SMALL) { + setStacked(true); + // Measure again in the new orientation. + needsRemeasure = true; + } + } + + if (needsRemeasure) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + } + + @VisibleForTesting + void setStacked(boolean stacked) { + setOrientation(stacked ? LinearLayout.VERTICAL : LinearLayout.HORIZONTAL); + setGravity(stacked ? Gravity.START : Gravity.BOTTOM); + + final View spacer = findViewById(R.id.spacer); + if (spacer != null) { + spacer.setVisibility(stacked ? View.GONE : View.VISIBLE); + } + } + + private boolean isStacked() { + return getOrientation() == LinearLayout.VERTICAL; + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/graph/BottomLabelLayoutTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/graph/BottomLabelLayoutTest.java new file mode 100644 index 000000000000..ec217230af95 --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/graph/BottomLabelLayoutTest.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2017 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.settingslib.graph; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.Space; + +import com.android.settingslib.R; +import com.android.settingslib.TestConfig; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +@RunWith(RobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class BottomLabelLayoutTest { + private BottomLabelLayout mBottomLabelLayout; + private Context mContext; + private Space mSpace; + + @Before + public void setUp() { + mContext = RuntimeEnvironment.application; + mBottomLabelLayout = new BottomLabelLayout(mContext, null); + mBottomLabelLayout.setOrientation(LinearLayout.HORIZONTAL); + + mSpace = new Space(mContext); + mSpace.setId(R.id.spacer); + mBottomLabelLayout.addView(mSpace); + } + + @Test + public void testSetStacked_stackedTrue_layoutVertical() { + mBottomLabelLayout.setStacked(true); + + assertThat(mBottomLabelLayout.getOrientation()).isEqualTo(LinearLayout.VERTICAL); + assertThat(mSpace.getVisibility()).isEqualTo(View.GONE); + } + + @Test + public void testSetStacked_stackedFalse_layoutHorizontal() { + mBottomLabelLayout.setStacked(false); + + assertThat(mBottomLabelLayout.getOrientation()).isEqualTo(LinearLayout.HORIZONTAL); + assertThat(mSpace.getVisibility()).isEqualTo(View.VISIBLE); + } +} diff --git a/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java b/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java index c58dd5d97979..2b212c11b732 100644 --- a/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java +++ b/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java @@ -31,6 +31,7 @@ import android.graphics.Xfermode; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import android.support.v4.graphics.ColorUtils; import android.view.animation.DecelerateInterpolator; @@ -196,6 +197,16 @@ public class GradientDrawable extends Drawable { canvas.drawRect(x - radius, y - radius, x + radius, y + radius, mPaint); } + @VisibleForTesting + public int getMainColor() { + return mMainColor; + } + + @VisibleForTesting + public int getSecondaryColor() { + return mSecondaryColor; + } + static final class Splat { final float x; final float y; diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index f7e1b648cdf7..addb87ab4532 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> bestuur jou werkprofiel. Die profiel is gekoppel aan <xliff:g id="APPLICATION">%2$s</xliff:g>, wat jou netwerkaktiwiteit, insluitend e-posse, programme en webwerwe, kan monitor.\n\nKontak jou administrateur vir meer inligting."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> bestuur jou werkprofiel. Die profiel is gekoppel aan <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, wat jou netwerkaktiwiteit, insluitend e-posse, programme en webwerwe, kan monitor.\n\nJy is ook gekoppel aan <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, wat jou persoonlike netwerkaktiwiteit kan monitor."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ontsluit vir <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> loop tans"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Toestel sal gesluit bly totdat jy dit handmatig ontsluit"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Kry kennisgewings vinniger"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Sien hulle voordat jy ontsluit"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minute"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minute"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 uur"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ONTDOEN"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Sluimer vir <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Batterygebruik"</string> diff --git a/packages/SystemUI/res/values-af/strings_car.xml b/packages/SystemUI/res/values-af/strings_car.xml index a8f600e81e77..87462fc28b0c 100644 --- a/packages/SystemUI/res/values-af/strings_car.xml +++ b/packages/SystemUI/res/values-af/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Onbekend"</string> + <string name="start_driving" msgid="864023351402918991">"Begin ry"</string> </resources> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 9bca33ce657f..ff5561df78a7 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"የእርስዎ የሥራ መገለጫ በ<xliff:g id="ORGANIZATION">%1$s</xliff:g> የሚተዳደር ነው። መገለጫው ኢሜይሎችን፣ መተግበሪያዎችን፣ እና የድር ጣቢያዎችን ጨምሮ የአውታረ መረብ እንቅስቃሴን መቆጣጠር ከሚችለው ከ<xliff:g id="APPLICATION">%2$s</xliff:g> ጋር ተገናኝቷል።\n\nለተጨማሪ መረጃ የእርስዎን አስተዳዳሪ ያነጋግሩ።"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"የእርስዎ የሥራ መገለጫ በ<xliff:g id="ORGANIZATION">%1$s</xliff:g> የሚተዳደር ነው። መገለጫው ኢሜይሎችን፣ መተግበሪያዎችን፣ እና የድር ጣቢያዎችን ጨምሮ የአውታረ መረብ እንቅስቃሴን መቆጣጠር ከሚችለው ከ<xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ጋር ተገናኝቷል።\n\nበተጨማሪ የእርስዎን የግል የአውታረ መረብ እንቅስቃሴ መቆጣጠር ከሚችለው ከ<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ጋር ተገናኝተዋል።"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"ለ<xliff:g id="USER_NAME">%1$s</xliff:g> ተከፍቷል"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> እያሄደ ነው"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"እራስዎ እስኪከፍቱት ድረስ መሣሪያ እንደተቆለፈ ይቆያል"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ማሳወቂያዎችን ፈጥነው ያግኙ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ከመክፈትዎ በፊት ይመልከቷቸው"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 ደቂቃዎች"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 ደቂቃዎች"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ሰዓት"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ቀልብስ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"ለ<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> አሸልቧል"</string> <string name="battery_panel_title" msgid="7944156115535366613">"የባትሪ አጠቃቀም"</string> diff --git a/packages/SystemUI/res/values-am/strings_car.xml b/packages/SystemUI/res/values-am/strings_car.xml index c4516562d825..5ebb05a4c481 100644 --- a/packages/SystemUI/res/values-am/strings_car.xml +++ b/packages/SystemUI/res/values-am/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"ያልታወቀ"</string> + <string name="start_driving" msgid="864023351402918991">"መንዳት ይጀምሩ"</string> </resources> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index e354da1a32d7..036985c5c31a 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -475,8 +475,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"يخضع الملف الشخصي للعمل لإدارة <xliff:g id="ORGANIZATION">%1$s</xliff:g>. تم ربط الملف الشخصي بـ <xliff:g id="APPLICATION">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطة شبكتك، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nيمكنك الاتصال بالمشرف للحصول على مزيد من المعلومات."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"يخضع الملف الشخصي للعمل لإدارة <xliff:g id="ORGANIZATION">%1$s</xliff:g>. تم ربط هذا الملف الشخصي بـ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطة شبكتك، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nتم ربطك بـ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>، الذي يمكنه مراقبة أنشطة شبكتك الشخصية."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"تم إلغاء القفل لـ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> قيد التشغيل"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"سيظل الجهاز مقفلاً إلى أن يتم إلغاء قفله يدويًا"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"الحصول على الإشعارات بشكل أسرع"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"الاطلاع عليها قبل إلغاء القفل"</string> @@ -591,6 +590,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"١٥ دقيقة"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"٣۰ دقيقة"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"ساعة واحدة"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"تراجع"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"تم تأجيل الإشعار لمدة <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"استخدام البطارية"</string> diff --git a/packages/SystemUI/res/values-ar/strings_car.xml b/packages/SystemUI/res/values-ar/strings_car.xml index db62b484ac56..7fec955a5506 100644 --- a/packages/SystemUI/res/values-ar/strings_car.xml +++ b/packages/SystemUI/res/values-ar/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"غير معروف"</string> + <string name="start_driving" msgid="864023351402918991">"بدء القيادة"</string> </resources> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index ba8235c64667..d22c28675cdc 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"İş profili <xliff:g id="ORGANIZATION">%1$s</xliff:g> tərəfindən idarə olunur. Profil e-poçt, tətbiq və veb saytlar da daxil olmaqla şəbəkə fəaliyyətinə nəzarət edən <xliff:g id="APPLICATION">%2$s</xliff:g> tətbiqinə qoşuludur.\n\nƏtraflı məlumat üçün admin ilə əlaqə saxlayın."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"İş profili <xliff:g id="ORGANIZATION">%1$s</xliff:g> tərəfindən idarə edilir. Profil e-poçt, tətbiq və veb saytlar da daxil olmaqla şəbəkə fəaliyyətinə nəzarət edən <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> tətbiqinə qoşuludur.\n\nEyni zamanda şəxsi şəbəkə fəaliyyətinə nəzarət edən <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> tətbiqinə qoşulusunuz."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> üçün kiliddən çıxarıldı"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> işləyir"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Bildirişləri daha sürətlə əldə edin"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Kiliddən çıxarmadan öncə onları görün"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 dəqiqə"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 dəqiqə"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 saat"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"GERİ QAYTARIN"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> üçün təxirə salınıb"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Batareya istifadəsi"</string> diff --git a/packages/SystemUI/res/values-az/strings_car.xml b/packages/SystemUI/res/values-az/strings_car.xml index a225982f8aa8..0b49eda732c7 100644 --- a/packages/SystemUI/res/values-az/strings_car.xml +++ b/packages/SystemUI/res/values-az/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Naməlum"</string> + <string name="start_driving" msgid="864023351402918991">"Sürməyə başlayın"</string> </resources> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index b88634a016c9..b751a373b02c 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profilom za Work upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Povezan je sa aplikacijom <xliff:g id="APPLICATION">%2$s</xliff:g>, koja može da nadgleda aktivnosti na poslovnoj mreži, uključujući imejlove, aplikacije i veb-sajtove.\n\nViše informacija potražite od administratora."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profilom za Work upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Povezan je sa aplikacijom <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, koja može da nadgleda aktivnosti na poslovnoj mreži, uključujući imejlove, aplikacije i veb-sajtove.\n\nPovezani ste i sa aplikacijom <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, koja može da nadgleda aktivnosti na ličnoj mreži."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Otključano za korisnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Funkcija <xliff:g id="TRUST_AGENT">%1$s</xliff:g> je pokrenuta"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Uređaj će ostati zaključan dok ga ne otključate ručno"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Brže dobijajte obaveštenja"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Pregledajte ih pre otključavanja"</string> @@ -579,6 +578,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuta"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuta"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 sat"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"OPOZOVI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Odloženo je za <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Potrošnja baterije"</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml b/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml index 3837c7b2d80f..ac65171693c2 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Nepoznato"</string> + <string name="start_driving" msgid="864023351402918991">"Počnite da vozite"</string> </resources> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index e20d3f58bce7..1767fabf8981 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -473,8 +473,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ваш працоўны профіль знаходзіцца пад кіраваннем <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ён падключаны да праграмы <xliff:g id="APPLICATION">%2$s</xliff:g>, якая можа сачыць за вашай працоўнай сеткавай актыўнасцю, уключаючы электронную пошту, праграмы і вэб-сайты.\n\nДля атрымання дадатковай інфармацыі звярніцеся да адміністратара."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ваш працоўны профіль знаходзіцца пад кіраваннем <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ён падключаны да праграмы <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, якая можа сачыць за вашай працоўнай сеткавай актыўнасцю, уключаючы электронную пошту, праграмы і вэб-сайты.\n\nВы таксама падключаны да праграмы <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, якая можа сачыць за вашай асабістай сеткавай актыўнасцю."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Разблакіравана для карыстальніка <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> працуе"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Прылада будзе заставацца заблакіраванай, пакуль вы не разблакіруеце яе ўручную"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Атрымлівайце апавяшчэнні хутчэй"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Праглядайце іх перад разблакіроўкай"</string> @@ -585,6 +584,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 хвілін"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 хвілін"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 гадзіна"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"АДРАБІЦЬ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Адкладзена на <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Выкарыстанне зараду"</string> diff --git a/packages/SystemUI/res/values-be/strings_car.xml b/packages/SystemUI/res/values-be/strings_car.xml index ca53f9b93bfb..7d53c97761dc 100644 --- a/packages/SystemUI/res/values-be/strings_car.xml +++ b/packages/SystemUI/res/values-be/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Невядомы"</string> + <string name="start_driving" msgid="864023351402918991">"Пачаць паездку"</string> </resources> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index dd5154f36700..8fa27ee220a0 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Служебният ви потребителски профил се управлява от <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Той е свързан с приложението <xliff:g id="APPLICATION">%2$s</xliff:g>, което може да наблюдава служебната ви активност в мрежата, включително имейли, приложения и уебсайтове.\n\nЗа още информация се свържете с администратора си."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Служебният ви потребителски профил се управлява от <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Той е свързан с приложението <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, което може да наблюдава служебната ви активност в мрежата, включително имейли, приложения и уебсайтове.\n\nУстановена е връзка и с приложението <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, което може да наблюдава личната ви активност в мрежата."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Отключено за <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> се изпълнява"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Устройството ще остане заключено, докато не го отключите ръчно"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Получавайте известия по-бързо"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Вижте известията, преди да отключите"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 минути"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 минути"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 час"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ОТМЯНА"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Отложено за <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Ползв. на батерията"</string> diff --git a/packages/SystemUI/res/values-bg/strings_car.xml b/packages/SystemUI/res/values-bg/strings_car.xml index 0ff0729e172a..c7f69740a270 100644 --- a/packages/SystemUI/res/values-bg/strings_car.xml +++ b/packages/SystemUI/res/values-bg/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Няма информация"</string> + <string name="start_driving" msgid="864023351402918991">"Започнете да шофирате"</string> </resources> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index d8263432433d..250db2b14659 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> আপনার কর্মস্থলের প্রোফাইল পরিচালনা করে। প্রোফাইলটি <xliff:g id="APPLICATION">%2$s</xliff:g> এর সাথে সংযুক্ত, যেটি ইমেল, অ্যাপ, ও ওয়েবসাইট সহ আপনার কর্মস্থলের নেটওয়ার্ক কার্যকলাপের উপরে নজর রাখতে পারে।\n\nআরো তথ্যের জন্য প্রশাসকের সাথে যোগাযোগ করুন।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> আপনার কর্মস্থলের প্রোফাইল পরিচালনা করে। প্রোফাইলটি <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> এর সাথে সংযুক্ত, যেটি ইমেল অ্যাপ, ও ওয়েবসাইট সহ আপনার কর্মস্থলের নেটওয়ার্ক কার্যকলাপের উপরে নজর রাখতে পারে।\n\n এ ছাড়াও আপনি <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> এর সাথে সংযুক্ত, যেটি আপনার ব্যক্তিগত নেটওয়ার্কে নজর রাখে।"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> এর জন্য আনলক করা হয়েছে"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> চালু আছে"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"আপনি নিজে আনলক না করা পর্যন্ত ডিভাইসটি লক হয়ে থাকবে"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"বিজ্ঞপ্তিগুলি আরো দ্রুত পান"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"আপনি আনলক করার আগে ওগুলো দেখুন"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"১৫ মিনিট"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"৩০ মিনিট"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"১ ঘণ্টা"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"পূর্বাবস্থায় ফিরুন"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> পরে আবার মনে করানো হবে"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ব্যাটারির ব্যবহার"</string> diff --git a/packages/SystemUI/res/values-bn/strings_car.xml b/packages/SystemUI/res/values-bn/strings_car.xml index 4271f987b81e..d014c02b3cfd 100644 --- a/packages/SystemUI/res/values-bn/strings_car.xml +++ b/packages/SystemUI/res/values-bn/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"অজানা"</string> + <string name="start_driving" msgid="864023351402918991">"ড্রাইভিং শুরু করুন"</string> </resources> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 104186ccedd2..d46892af1f0b 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Vašim radnim profilom upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION">%2$s</xliff:g>, koja može pratiti vašu aktivnost na radnoj mreži, uključujući e-poruke, aplikacije i web lokacije.\n\nZa više informacija, obratite se svom administratoru."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Radnim profilom upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, koja može pratiti vašu aktivnost na radnoj mreži, uključujući e-poruke, aplikacije i web lokacije.\n\nPovezani ste i sa aplikacijom <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, koja može pratiti vašu aktivnost na privatnoj mreži."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Otključano za korisnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Agent <xliff:g id="TRUST_AGENT">%1$s</xliff:g> je pokrenut"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Uređaj će ostati zaključan dok ga ručno ne otključate"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Brže primaj obavještenja"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Vidi ih prije otključavanja"</string> @@ -581,6 +580,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuta"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuta"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 sat"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"OPOZOVI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Odgođeno za <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Potrošnja baterije"</string> diff --git a/packages/SystemUI/res/values-bs/strings_car.xml b/packages/SystemUI/res/values-bs/strings_car.xml index 3837c7b2d80f..d38620bdecf5 100644 --- a/packages/SystemUI/res/values-bs/strings_car.xml +++ b/packages/SystemUI/res/values-bs/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Nepoznato"</string> + <string name="start_driving" msgid="864023351402918991">"Početak vožnje"</string> </resources> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 0bb02afb685a..1888250cde5e 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona el teu perfil professional. El perfil està connectat a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pot supervisar la teva activitat a la xarxa de treball, com ara els correus electrònics, les aplicacions i els llocs web.\n\nPer obtenir més informació, contacta amb l\'administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona el teu perfil professional. El perfil està connectat a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pot supervisar la teva activitat a la xarxa de treball, com ara els correus electrònics, les aplicacions i els llocs web.\n\nTambé estàs connectat a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pot supervisar la teva activitat personal a la xarxa."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloquejat per a <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> s\'està executant"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"El dispositiu continuarà bloquejat fins que no el desbloquegis manualment."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Rep notificacions més ràpidament"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Mostra-les abans de desbloquejar"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuts"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuts"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESFÉS"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"S\'ha posposat <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Ús de la bateria"</string> diff --git a/packages/SystemUI/res/values-ca/strings_car.xml b/packages/SystemUI/res/values-ca/strings_car.xml index ed53d2f3235b..32a019eaaa7b 100644 --- a/packages/SystemUI/res/values-ca/strings_car.xml +++ b/packages/SystemUI/res/values-ca/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Desconegut"</string> + <string name="start_driving" msgid="864023351402918991">"Comença a conduir"</string> </resources> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 591035516a97..4529276afa16 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -473,8 +473,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Váš pracovní profil spravuje organizace <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je připojen k aplikaci <xliff:g id="APPLICATION">%2$s</xliff:g>, která může sledovat vaši aktivitu v síti, včetně e-mailů, aplikací a webů.\n\nDalší informace vám poskytne administrátor."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Váš pracovní profil spravuje organizace <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je připojen k aplikaci <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, která může sledovat vaši aktivitu v síti, včetně e-mailů, aplikací a webů.\n\nTaké jste připojeni k aplikaci <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, která může sledovat vaši osobní aktivitu v síti."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odemknuto pro uživatele <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> běží"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Zařízení zůstane uzamčeno, dokud je ručně neodemknete"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Čtěte si oznámení rychleji"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Můžete si je přečíst před odemčením obrazovky."</string> @@ -585,6 +584,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minut"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minut"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hodina"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"VRÁTIT ZPĚT"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Odloženo o <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Využití baterie"</string> diff --git a/packages/SystemUI/res/values-cs/strings_car.xml b/packages/SystemUI/res/values-cs/strings_car.xml index 08c1183bddb3..b8a0d3e24117 100644 --- a/packages/SystemUI/res/values-cs/strings_car.xml +++ b/packages/SystemUI/res/values-cs/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Neznámé"</string> + <string name="start_driving" msgid="864023351402918991">"Zahájit jízdu"</string> </resources> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 1c51261d12b7..348ef5acda0a 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Din arbejdsprofil administreres af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen har forbindelse til <xliff:g id="APPLICATION">%2$s</xliff:g>, som kan overvåge din netværksaktivitet, bl.a. mails, apps og websites.\n\nKontakt din administrator for at få flere oplysninger."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Din arbejdsprofil administreres af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen har forbindelse til <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, som kan overvåge din netværksaktivitet, bl.a. mails, apps og websites.\n\nDu har også forbindelse til <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, som kan overvåge din personlige netværksaktivitet."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Låst op for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> kører"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheden vil forblive låst, indtil du manuelt låser den op"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Modtag underretninger hurtigere"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Se dem, før du låser op"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutter"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutter"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 time"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"FORTRYD"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Udsat i <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Batteriforbrug"</string> diff --git a/packages/SystemUI/res/values-da/strings_car.xml b/packages/SystemUI/res/values-da/strings_car.xml index 4f210ddbc503..26843acadab7 100644 --- a/packages/SystemUI/res/values-da/strings_car.xml +++ b/packages/SystemUI/res/values-da/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Ukendt"</string> + <string name="start_driving" msgid="864023351402918991">"Kør"</string> </resources> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index e46856f90f19..f71293ab8558 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit <xliff:g id="APPLICATION">%2$s</xliff:g> verknüpft. Diese App kann deine Netzwerkaktivitäten überwachen, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhältst du von deinem Administrator."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> verknüpft. Diese App kann deine Netzwerkaktivitäten überwachen, einschließlich E-Mails, Apps und Websites.\n\nDu bist auch mit <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> verbunden, die deine persönlichen Netzwerkaktivitäten überwachen kann."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Entsperrt für <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> wird ausgeführt"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Das Gerät bleibt gesperrt, bis du es manuell entsperrst."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Benachrichtigungen schneller erhalten"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Vor dem Entsperren anzeigen"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 Minuten"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 Minuten"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 Stunde"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"RÜCKGÄNGIG"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Erinnerung in <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Akkunutzung"</string> diff --git a/packages/SystemUI/res/values-de/strings_car.xml b/packages/SystemUI/res/values-de/strings_car.xml index 44c47d36ddcd..76ff268eff92 100644 --- a/packages/SystemUI/res/values-de/strings_car.xml +++ b/packages/SystemUI/res/values-de/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Unbekannt"</string> + <string name="start_driving" msgid="864023351402918991">"Losfahren"</string> </resources> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 51f1fbb5f222..d42d815666a7 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ο οργανισμός <xliff:g id="ORGANIZATION">%1$s</xliff:g> διαχειρίζεται το προφίλ εργασίας σας. Το προφίλ είναι συνδεδεμένο στην εφαρμογή <xliff:g id="APPLICATION">%2$s</xliff:g>, η οποία μπορεί να παρακολουθήσει τη δραστηριότητα του δικτύου εργασίας σας, συμπεριλαμβανομένων μηνυμάτων ηλεκτρονικού ταχυδρομείου, εφαρμογών και ιστοτόπων.\n\nΓια περισσότερες πληροφορίες, επικοινωνήστε με τον διαχειριστή σας."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ο οργανισμός <xliff:g id="ORGANIZATION">%1$s</xliff:g> διαχειρίζεται το προφίλ εργασίας σας. Το προφίλ συνδέεται με την εφαρμογή <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, η οποία μπορεί να παρακολουθεί τη δραστηριότητα του δικτύου της εργασίας σας, συμπεριλαμβανομένων μηνυμάτων ηλεκτρονικού ταχυδρομείου, εφαρμογών και ιστοτόπων.\n\nΕπίσης, είστε συνδεδεμένοι στην εφαρμογή <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, που έχει τη δυνατότητα παρακολούθησης της δραστηριότητας του προσωπικού σας δικτύου."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ξεκλειδώθηκε για τον χρήστη <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Εκτελείται ο παράγοντας εμπιστοσύνης <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Η συσκευή θα παραμείνει κλειδωμένη μέχρι να την ξεκλειδώσετε μη αυτόματα"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Λάβετε ειδοποιήσεις γρηγορότερα"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Εμφάνιση πριν το ξεκλείδωμα"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 λεπτά"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 λεπτά"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ώρα"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ΑΝΑΙΡΕΣΗ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Σε αφύπνιση για <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Χρήση της μπαταρίας"</string> diff --git a/packages/SystemUI/res/values-el/strings_car.xml b/packages/SystemUI/res/values-el/strings_car.xml index 4d0414128302..09a2a39a1253 100644 --- a/packages/SystemUI/res/values-el/strings_car.xml +++ b/packages/SystemUI/res/values-el/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Άγνωστο"</string> + <string name="start_driving" msgid="864023351402918991">"Έναρξη οδήγησης"</string> </resources> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index d299fa13efbf..f06636d9b46a 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutes"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutes"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hour"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"UNDO"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Snoozed for <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Battery usage"</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings_car.xml b/packages/SystemUI/res/values-en-rAU/strings_car.xml index d6bf442b8b6f..27b916e9a2e6 100644 --- a/packages/SystemUI/res/values-en-rAU/strings_car.xml +++ b/packages/SystemUI/res/values-en-rAU/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Unknown"</string> + <string name="start_driving" msgid="864023351402918991">"Start Driving"</string> </resources> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index d299fa13efbf..f06636d9b46a 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutes"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutes"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hour"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"UNDO"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Snoozed for <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Battery usage"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings_car.xml b/packages/SystemUI/res/values-en-rGB/strings_car.xml index d6bf442b8b6f..27b916e9a2e6 100644 --- a/packages/SystemUI/res/values-en-rGB/strings_car.xml +++ b/packages/SystemUI/res/values-en-rGB/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Unknown"</string> + <string name="start_driving" msgid="864023351402918991">"Start Driving"</string> </resources> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index d299fa13efbf..f06636d9b46a 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutes"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutes"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hour"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"UNDO"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Snoozed for <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Battery usage"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings_car.xml b/packages/SystemUI/res/values-en-rIN/strings_car.xml index d6bf442b8b6f..27b916e9a2e6 100644 --- a/packages/SystemUI/res/values-en-rIN/strings_car.xml +++ b/packages/SystemUI/res/values-en-rIN/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Unknown"</string> + <string name="start_driving" msgid="864023351402918991">"Start Driving"</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 74b40e34c4b2..e9bf270f72aa 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> administra tu perfil de trabajo. El perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que puede controlar tu actividad de red de trabajo, incluidos los correos electrónicos, apps y sitios web.\n\nPara obtener más información, comunícate con tu administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> administra tu perfil de red. El perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que puede controlar tu actividad de red de trabajo, incluidos los correos electrónicos, las apps y los sitios web.\n\nTambién estás conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que puede controlar tu actividad de red personal."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Se desbloqueó para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Se está ejecutando <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"El dispositivo permanecerá bloqueado hasta que lo desbloquees manualmente."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recibe notificaciones más rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ver antes de desbloquear"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutos"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutos"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESHACER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Posponer <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Uso de la batería"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings_car.xml b/packages/SystemUI/res/values-es-rUS/strings_car.xml index 9de5be09d82f..382602a9e766 100644 --- a/packages/SystemUI/res/values-es-rUS/strings_car.xml +++ b/packages/SystemUI/res/values-es-rUS/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Desconocido"</string> + <string name="start_driving" msgid="864023351402918991">"Comenzar a conducir"</string> </resources> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 9301d8600415..9826b456dd93 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona tu perfil de trabajo. El perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que puede supervisar tu actividad de red profesional, como los correos electrónicos, las aplicaciones y los sitios web.\n\nPara obtener más información, ponte en contacto con el administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona tu perfil de trabajo. El perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que puede supervisar tu actividad de red profesional, como los correos electrónicos, las aplicaciones y los sitios web.\n\nTambién te has conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que puede supervisar tu actividad de red personal."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> se está ejecutando"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"El dispositivo permanecerá bloqueado hasta que se desbloquee manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recibe notificaciones más rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ver antes de desbloquear"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutos"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutos"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESHACER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Volverá a mostrarse en <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Uso de la batería"</string> diff --git a/packages/SystemUI/res/values-es/strings_car.xml b/packages/SystemUI/res/values-es/strings_car.xml index 9de5be09d82f..47a40b0dc747 100644 --- a/packages/SystemUI/res/values-es/strings_car.xml +++ b/packages/SystemUI/res/values-es/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Desconocido"</string> + <string name="start_driving" msgid="864023351402918991">"Empezar a conducir"</string> </resources> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index cdd0d55c3f6b..afe1598c326a 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Teie tööprofiili haldab <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profiil on ühendatud rakendusega <xliff:g id="APPLICATION">%2$s</xliff:g>, mis saab jälgida teie töökoha võrgutegevusi, sh meile, rakendusi ja veebisaite.\n\nLisateabe saamiseks võtke ühendust administraatoriga."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Teie tööprofiili haldab <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profiil on ühendatud rakendusega <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, mis saab jälgida teie töökoha võrgutegevusi, sh meile, rakendusi ja veebisaite.\n\nOlete ühendatud ka rakendusega <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, mis saab jälgida teie isiklikke võrgutegevusi."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Avatud kasutaja <xliff:g id="USER_NAME">%1$s</xliff:g> jaoks"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Funktsioon <xliff:g id="TRUST_AGENT">%1$s</xliff:g> töötab"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Seade jääb lukku, kuni selle käsitsi avate"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Saate märguandeid kiiremini"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Näete neid enne avamist"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutit"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutit"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"Üks tund"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"VÕTA TAGASI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Edasi lükatud <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Akukasutus"</string> diff --git a/packages/SystemUI/res/values-et/strings_car.xml b/packages/SystemUI/res/values-et/strings_car.xml index 819fb7697d01..a63c3f386698 100644 --- a/packages/SystemUI/res/values-et/strings_car.xml +++ b/packages/SystemUI/res/values-et/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Teadmata"</string> + <string name="start_driving" msgid="864023351402918991">"Sõidu alustamine"</string> </resources> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index c65a0dc2e384..999b954c9067 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> erakundeak kudeatzen dizu laneko profila. <xliff:g id="APPLICATION">%2$s</xliff:g> aplikaziora dago konektatuta profila, eta aplikazio horrek sarean egiten dituzun jarduerak kontrola ditzake, mezu elektronikoak, aplikazioak eta webguneak barne.\n\nInformazio gehiago lortzeko, jarri administratzailearekin harremanetan."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> erakundeak kudeatzen dizu laneko profila. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> aplikaziora dago konektatuta profila, eta aplikazio horrek sarean egiten dituzun jarduerak kontrola ditzake, mezu elektronikoak, aplikazioak eta webguneak barne. \n\n<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> aplikaziora ere zaude konektatuta, eta hark sare pertsonalean egiten dituzun jarduerak kontrola ditzake."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> erabiltzailearentzat desblokeatu da"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> abian da"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Gailua blokeatuta egongo da eskuz desblokeatu arte"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Eskuratu jakinarazpenak azkarrago"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ikusi desblokeatu baino lehen"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutu"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutu"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ordu"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESEGIN"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g>z atzeratu da"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Bateriaren erabilera"</string> diff --git a/packages/SystemUI/res/values-eu/strings_car.xml b/packages/SystemUI/res/values-eu/strings_car.xml index ac2a4c17a1ca..59c2bb246886 100644 --- a/packages/SystemUI/res/values-eu/strings_car.xml +++ b/packages/SystemUI/res/values-eu/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Ezezaguna"</string> + <string name="start_driving" msgid="864023351402918991">"Hasi gidatzen"</string> </resources> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 805504f0d7b3..57151ab34e30 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"نمایه کاری شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت میشود. این نمایه به <xliff:g id="APPLICATION">%2$s</xliff:g> متصل است که میتواند فعالیت شما در شبکه (ازجمله رایانامهها، برنامهها و وبسایتها) را پایش کند.\n\nبرای اطلاعات بیشتر، با سرپرست سیستم تماس بگیرید."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"نمایه کاریتان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت میشود. این نمایه به <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> متصل است که میتواند تنظیمات، دسترسی شرکتی، برنامهها، دادههای مرتبط با دستگاه و اطلاعات مکان دستگاه شما را پایش کند.\n\nشما همچنین به <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> متصل هستید که میتواند فعالیت خصوصی شما را در شبکه پایش کند."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"قفل برای <xliff:g id="USER_NAME">%1$s</xliff:g> باز شد"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> درحال اجرا است"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"دستگاه قفل باقی میماند تا زمانی که قفل آن را به صورت دستی باز کنید"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"دریافت سریعتر اعلانها"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"قبل از باز کردن قفل آنها را مشاهده کنید"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"۱۵ دقیقه"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"۳۰ دقیقه"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"۱ ساعت"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"واگرد"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> به تعویق افتاد"</string> <string name="battery_panel_title" msgid="7944156115535366613">"مصرف باتری"</string> diff --git a/packages/SystemUI/res/values-fa/strings_car.xml b/packages/SystemUI/res/values-fa/strings_car.xml index 92270a6bb053..e91479665b91 100644 --- a/packages/SystemUI/res/values-fa/strings_car.xml +++ b/packages/SystemUI/res/values-fa/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"نامشخص"</string> + <string name="start_driving" msgid="864023351402918991">"شروع رانندگی"</string> </resources> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 5ed221ca453b..8dbec4bdcda4 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> hallinnoi työprofiiliasi. Se on yhteydessä sovellukseen <xliff:g id="APPLICATION">%2$s</xliff:g>, joka voi valvoa toimintaasi verkossa, esimerkiksi sähköposteja, sovelluksia ja verkkosivustoja.\n\nPyydä lisätietoja järjestelmänvalvojalta."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> hallinnoi työprofiiliasi. Se on yhteydessä sovellukseen <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, joka voi valvoa toimintaasi verkossa, esimerkiksi sähköposteja, sovelluksia ja verkkosivustoja.\n\nLisäksi olet yhteydessä sovellukseen <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, joka voi valvoa henkilökohtaista toimintaasi verkossa."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Lukitus avattu käyttäjälle <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> on käytössä"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Laite pysyy lukittuna, kunnes se avataan käsin"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Näe ilmoitukset nopeammin"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Näytä ennen lukituksen avaamista"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuuttia"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuuttia"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 tunti"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"KUMOA"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Torkku: <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Akun käyttö"</string> diff --git a/packages/SystemUI/res/values-fi/strings_car.xml b/packages/SystemUI/res/values-fi/strings_car.xml index 73c672909db5..927b13dbf814 100644 --- a/packages/SystemUI/res/values-fi/strings_car.xml +++ b/packages/SystemUI/res/values-fi/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Tuntematon"</string> + <string name="start_driving" msgid="864023351402918991">"Aloita ajaminen"</string> </resources> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 50465bba8f85..7f8d59c7dcdf 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux courriels, aux applications et aux sites Web.\n\nPour en savoir plus, communiquez avec votre administrateur."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux courriels, aux applications et aux sites Web.\n\nVous êtes également connecté à <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, qui peut contrôler votre activité personnelle sur le réseau."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Déverrouillé pour for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> fonctionne"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"L\'appareil restera verrouillé jusqu\'à ce que vous le déverrouilliez manuellement"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Voir les notifications plus rapidement"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Afficher les notifications avant de déverrouiller l\'appareil"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutes"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutes"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 heure"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANNULER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Reporté pour <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Utilisation de la pile"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings_car.xml b/packages/SystemUI/res/values-fr-rCA/strings_car.xml index 8cfee94eb494..a88dc3bcf421 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings_car.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Inconnu"</string> + <string name="start_driving" msgid="864023351402918991">"Commencer à conduire"</string> </resources> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index b22b2990fcf3..169830a6227e 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux e-mails, aux applications et aux sites Web.\n\nPour plus d\'informations, contactez votre administrateur."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux e-mails, aux applications et aux sites Web.\n\nVous êtes également connecté à <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, qui peut contrôler votre activité personnelle sur le réseau."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Déverrouillé pour <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> est en cours d\'exécution"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"L\'appareil restera verrouillé jusqu\'à ce que vous le déverrouilliez manuellement."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recevoir les notifications plus vite"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Afficher les notifications avant de déverrouiller l\'appareil"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutes"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutes"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 heure"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANNULER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Répétée après <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Utilisation batterie"</string> diff --git a/packages/SystemUI/res/values-fr/strings_car.xml b/packages/SystemUI/res/values-fr/strings_car.xml index 8cfee94eb494..a88dc3bcf421 100644 --- a/packages/SystemUI/res/values-fr/strings_car.xml +++ b/packages/SystemUI/res/values-fr/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Inconnu"</string> + <string name="start_driving" msgid="864023351402918991">"Commencer à conduire"</string> </resources> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index d4ba101f6977..96a15c75f504 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona o teu perfil de traballo, que está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>. Esta aplicación pode controlar a túa actividade na rede, mesmo os correos electrónicos, as aplicacións e os sitios web.\n\nPara obter máis información, contacta co administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona o teu perfil de traballo, que está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>. Esta aplicación pode controlar a túa actividade na rede, mesmo os correos electrónicos, as aplicacións e os sitios web.\n\nTamén estás conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode controlar a túa actividade persoal na rede."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Estase executando: <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado ata que o desbloquees manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recibir notificacións máis rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Consúltaas antes de desbloquear"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutos"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutos"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESFACER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Adiouse <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Uso de batería"</string> diff --git a/packages/SystemUI/res/values-gl/strings_car.xml b/packages/SystemUI/res/values-gl/strings_car.xml index 88d1a48c7780..e6c6298445ad 100644 --- a/packages/SystemUI/res/values-gl/strings_car.xml +++ b/packages/SystemUI/res/values-gl/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Descoñecido"</string> + <string name="start_driving" msgid="864023351402918991">"Comezar a conducir"</string> </resources> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 39deb9b06376..78c2b901a558 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"તમારી કાર્ય પ્રોફાઇલ <xliff:g id="ORGANIZATION">%1$s</xliff:g> દ્વારા સંચાલિત કરાય છે. આ પ્રોફાઇલ <xliff:g id="APPLICATION">%2$s</xliff:g> સાથે કનેક્ટ કરેલ છે, જે ઇમેઇલ, ઍપ્લિકેશનો અને વેબસાઇટો સહિતની તમારી નેટવર્ક પ્રવૃત્તિનું નિયમન કરી શકે છે.\n\nવધુ માહિતી માટે, તમારા વ્યવસ્થાપકનો સંપર્ક કરો."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"તમારી કાર્ય પ્રોફાઇલ <xliff:g id="ORGANIZATION">%1$s</xliff:g> દ્વારા સંચાલિત થાય છે. આ પ્રોફાઇલ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> સાથે કનેક્ટ કરેલ છે, જે ઇમેઇલ, ઍપ્લિકેશનો અને વેબસાઇટો સહિતની તમારી નેટવર્ક પ્રવૃત્તિનું નિયમન કરી શકે છે.\n\nતમે <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> સાથે પણ કનેક્ટ કરેલું છે, જે તમારી વ્યક્તિગત નેટવર્ક પ્રવૃત્તિનું નિયમન કરી શકે છે."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> માટે અનલૉક કર્યુ"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ચાલી રહ્યું છે"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"તમે ઉપકરણને મેન્યુઅલી અનલૉક કરશો નહીં ત્યાં સુધી તે લૉક રહેશે"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"વધુ ઝડપથી સૂચનાઓ મેળવો"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"તમે અનલૉક કરો તે પહેલાં તેમને જુઓ"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 મિનિટ"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 મિનિટ"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 કલાક"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"પૂર્વવત્ કરો"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> માટે સ્નૂઝ કરો"</string> <string name="battery_panel_title" msgid="7944156115535366613">"બૅટરી વપરાશ"</string> diff --git a/packages/SystemUI/res/values-gu/strings_car.xml b/packages/SystemUI/res/values-gu/strings_car.xml index 49f408061e8e..57a6f02b8261 100644 --- a/packages/SystemUI/res/values-gu/strings_car.xml +++ b/packages/SystemUI/res/values-gu/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"અજાણ"</string> + <string name="start_driving" msgid="864023351402918991">"ડ્રાઇવિંગ શરૂ કરો"</string> </resources> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index c026febcdc6c..a0b30694c86e 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"आपकी कार्य प्रोफ़ाइल का प्रबंधन <xliff:g id="ORGANIZATION">%1$s</xliff:g> करता है. प्रोफ़ाइल <xliff:g id="APPLICATION">%2$s</xliff:g> से कनेक्ट है, जो ईमेल, ऐप्लिकेशन और वेबसाइटों सहित आपकी नेटवर्क गतिविधि की निगरानी कर सकता है.\n\nअधिक जानकारी के लिए, अपने व्यवस्थापक से संपर्क करें."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"आपकी कार्य प्रोफ़ाइल का प्रबंधन <xliff:g id="ORGANIZATION">%1$s</xliff:g> करता है. प्रोफ़ाइल <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> से कनेक्ट है, जो ईमेल, ऐप्लिकेशन और वेबसाइटों सहित आपकी नेटवर्क गतिविधि की निगरानी कर सकता है.\n\nआप <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> से भी कनेक्ट हैं, जो आपकी व्यक्तिगत नेटवर्क गतिविधि की निगरानी कर सकता है."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> के लिए अनलॉक किया गया"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> चल रहा है"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"जब तक कि आप मैन्युअल रूप से अनलॉक नहीं करते तब तक डिवाइस लॉक रहेगा"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"सूचनाएं अधिक तेज़ी से प्राप्त करें"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"आपके द्वारा उन्हें अनलॉक किए जाने से पहले देखें"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 मिनट"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 मिनट"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 घंटा"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"पहले जैसा करें"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> के लिए याद दिलाया गया"</string> <string name="battery_panel_title" msgid="7944156115535366613">"बैटरी उपयोग"</string> diff --git a/packages/SystemUI/res/values-hi/strings_car.xml b/packages/SystemUI/res/values-hi/strings_car.xml index a7a43790349a..3cf1fb39491b 100644 --- a/packages/SystemUI/res/values-hi/strings_car.xml +++ b/packages/SystemUI/res/values-hi/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"अज्ञात"</string> + <string name="start_driving" msgid="864023351402918991">"ड्राइविंग शुरू करें"</string> </resources> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 24428479b44c..8a8b57fa3b6c 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Vašim radnim profilom upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION">%2$s</xliff:g> koja može nadzirati vaše poslovne aktivnosti na mreži, uključujući e-poruke, aplikacije i web-lokacije.\n\nAko vam je potrebno više informacija, obratite se administratoru."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Vašim radnim profilom upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> koja može nadzirati vaše poslovne aktivnosti na mreži, uključujući e-poruke, aplikacije i web-lokacije.\n\nPovezani ste i s aplikacijom <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> koja može nadzirati vaše osobne aktivnosti na mreži."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Otključano za korisnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Izvodi se <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Uređaj će ostati zaključan dok ga ručno ne otključate"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Primajte obavijesti brže"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Pogledajte ih prije otključavanja"</string> @@ -579,6 +578,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuta"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuta"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 sat"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"PONIŠTI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Odgođeno <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Potrošnja baterije"</string> diff --git a/packages/SystemUI/res/values-hr/strings_car.xml b/packages/SystemUI/res/values-hr/strings_car.xml index 3837c7b2d80f..d38620bdecf5 100644 --- a/packages/SystemUI/res/values-hr/strings_car.xml +++ b/packages/SystemUI/res/values-hr/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Nepoznato"</string> + <string name="start_driving" msgid="864023351402918991">"Početak vožnje"</string> </resources> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index a036d7fb150f..669d7ad6b227 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Munkaprofilját a(z) <xliff:g id="ORGANIZATION">%1$s</xliff:g> kezeli. A profil csatlakozik a(z) <xliff:g id="APPLICATION">%2$s</xliff:g> alkalmazáshoz, amely figyelheti az Ön hálózati tevékenységeit, beleértve az e-maileket, alkalmazásokat és webhelyeket.\n\nTovábbi információért forduljon a rendszergazdához."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Munkaprofilját a(z) <xliff:g id="ORGANIZATION">%1$s</xliff:g> kezeli. A profil csatlakozik a(z) <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> alkalmazáshoz, amely figyelheti az Ön hálózati tevékenységeit, beleértve az e-maileket, alkalmazásokat és webhelyeket.\n\nCsatlakoztatta továbbá a(z) <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> alkalmazást, amely figyelheti az Ön személyes hálózati tevékenységeit."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Felnyitva a következő számára: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"A(z) <xliff:g id="TRUST_AGENT">%1$s</xliff:g> jelenleg fut"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Az eszköz addig zárolva marad, amíg kézileg fel nem oldja"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Gyorsabban megkaphatja az értesítéseket"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Már a képernyőzár feloldása előtt megtekintheti őket"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 perc"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 perc"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 óra"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"VISSZAVONÁS"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Elhalasztva: <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Akkumulátorhasználat"</string> diff --git a/packages/SystemUI/res/values-hu/strings_car.xml b/packages/SystemUI/res/values-hu/strings_car.xml index 8e741bb1f49f..46bf09df889d 100644 --- a/packages/SystemUI/res/values-hu/strings_car.xml +++ b/packages/SystemUI/res/values-hu/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Ismeretlen"</string> + <string name="start_driving" msgid="864023351402918991">"Kezdhet vezetni"</string> </resources> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 561306b7365b..88de8cbb3580 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ձեր աշխատանքային պրոֆիլի կառավարիչն է <xliff:g id="ORGANIZATION">%1$s</xliff:g> կազմակերպությունը: Այն կապակցված է <xliff:g id="APPLICATION">%2$s</xliff:g> հավելվածին, որը կարող է վերահսկել աշխատանքային ցանցում կատարած գործունեությունը, այդ թվում նաև էլփոստի հաշիվները, հավելվածները և կայքերը:\n\nԼրացուցիչ տեղեկություններ ստանալու համար դիմեք ձեր ադմինիստրատորին։"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ձեր աշխատանքային պրոֆիլի կառավարիչն է <xliff:g id="ORGANIZATION">%1$s</xliff:g> կազմակերպությունը: Այն կապակցված է <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> հավելվածին, որը կարող է վերահսկել աշխատանքային ցանցում կատարած գործունեությունը, այդ թվում նաև էլփոստի հաշիվները, հավելվածները և կայքերը:\n\nԴուք կապակցված եք նաև <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> հավելվածին, որը կարող է վերահսկել անձնական ցանցում կատարած ձեր գործողությունները:"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ապակողպվել է <xliff:g id="USER_NAME">%1$s</xliff:g> օգտատիրոջ համար"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g>-ն աշխատում է"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Սարքը կմնա արգելափակված՝ մինչև ձեռքով չբացեք"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Ավելի արագ ստացեք ծանուցումները"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Տեսեք դրանք մինչև ապակողպելը"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 րոպե"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 րոպե"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ժամ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ՀԵՏԱՐԿԵԼ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Հետաձգվել է <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>ով"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Մարտկոցի օգտագործում"</string> diff --git a/packages/SystemUI/res/values-hy/strings_car.xml b/packages/SystemUI/res/values-hy/strings_car.xml index acb376c3070e..3d7f22566250 100644 --- a/packages/SystemUI/res/values-hy/strings_car.xml +++ b/packages/SystemUI/res/values-hy/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Անհայտ"</string> + <string name="start_driving" msgid="864023351402918991">"Սկսել վարումը"</string> </resources> diff --git a/packages/SystemUI/res/values-hy/strings_tv.xml b/packages/SystemUI/res/values-hy/strings_tv.xml index ac7711b39ecc..0493584e39a7 100644 --- a/packages/SystemUI/res/values-hy/strings_tv.xml +++ b/packages/SystemUI/res/values-hy/strings_tv.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="notification_channel_tv_pip" msgid="134047986446577723">"Նկարը նկարի մեջ"</string> + <string name="notification_channel_tv_pip" msgid="134047986446577723">"Նկար նկարի մեջ"</string> <string name="pip_notification_unknown_title" msgid="6289156118095849438">"(Առանց վերնագրի ծրագիր)"</string> <string name="pip_close" msgid="3480680679023423574">"Փակել PIP-ն"</string> <string name="pip_fullscreen" msgid="8604643018538487816">"Լիէկրան"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 0e8696d3f28d..e743d6ea1c18 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profil kerja Anda dikelola oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil tersambung ke <xliff:g id="APPLICATION">%2$s</xliff:g>, yang dapat memantau aktivitas jaringan kerja, termasuk email, aplikasi, dan situs.\n\nHubungi admin untuk mendapatkan informasi lebih lanjut."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profil kerja Anda dikelola oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil tersambung ke <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, yang dapat memantau aktivitas jaringan, termasuk email, aplikasi, dan situs.\n\nAnda juga tersambung ke <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, yang dapat memantau aktivitas jaringan pribadi."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Dibuka kuncinya untuk <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> sedang berjalan"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Perangkat akan tetap terkunci hingga Anda membukanya secara manual"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Dapatkan pemberitahuan lebih cepat"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Lihat sebelum membuka kunci"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 menit"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 menit"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 jam"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"URUNG"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Ditunda selama <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Pemakaian baterai"</string> diff --git a/packages/SystemUI/res/values-in/strings_car.xml b/packages/SystemUI/res/values-in/strings_car.xml index 8f640accb9ba..09f31b0039f6 100644 --- a/packages/SystemUI/res/values-in/strings_car.xml +++ b/packages/SystemUI/res/values-in/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Tidak diketahui"</string> + <string name="start_driving" msgid="864023351402918991">"Mulai Mengemudi"</string> </resources> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 33228ede4d55..cf15ab65aadf 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Vinnusniðinu þínu er stýrt af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Sniðið er tengt <xliff:g id="APPLICATION">%2$s</xliff:g>, sem getur fylgst með netnotkun þinni, þ. á m. tölvupósti, forritum og vefsvæðum\n\nFrekari upplýsingar fást hjá kerfisstjóra."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Vinnusniðinu þínu er stýrt af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Sniðið er tengt <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, sem getur fylgst með netnotkun þinni, þ. á m. tölvupósti, forritum og vefsvæðum\n\nÞú ert einnig með tengingu við <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, sem getur fylgst með persónulegri netnotkun þinni."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Opnað fyrir <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> er í gangi"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Tækið verður læst þar til þú opnar það handvirkt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Fáðu tilkynningar hraðar"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Sjáðu þær áður en þú opnar"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 mínútur"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 mínútur"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 klukkustund"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"AFTURKALLA"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Þaggað í <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Rafhlöðunotkun"</string> diff --git a/packages/SystemUI/res/values-is/strings_car.xml b/packages/SystemUI/res/values-is/strings_car.xml index 43c4cbb56d53..5c89c769094c 100644 --- a/packages/SystemUI/res/values-is/strings_car.xml +++ b/packages/SystemUI/res/values-is/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Óþekkt"</string> + <string name="start_driving" msgid="864023351402918991">"Keyra af stað"</string> </resources> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 336bf83f5239..c72434e9ea0b 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Il tuo profilo di lavoro è gestito da <xliff:g id="ORGANIZATION">%1$s</xliff:g> ed è collegato a <xliff:g id="APPLICATION">%2$s</xliff:g>, da cui è possibile monitorare la tua attività di rete lavorativa, inclusi siti web, email e app.\n\nPer ulteriori informazioni, contatta l\'amministratore."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Il tuo profilo di lavoro è gestito da <xliff:g id="ORGANIZATION">%1$s</xliff:g> ed è collegato a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, da cui è possibile monitorare la tua attività di rete lavorativa, inclusi siti web, email e app.\n\nSei collegato anche a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, da cui è possibile monitorare la tua attività di rete personale."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Sbloccato per <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> in esecuzione"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Il dispositivo resterà bloccato fino allo sblocco manuale"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Ricevi notifiche più velocemente"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Visualizza prima di sbloccare"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuti"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuti"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANNULLA"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Posticipato di <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Utilizzo batteria"</string> diff --git a/packages/SystemUI/res/values-it/strings_car.xml b/packages/SystemUI/res/values-it/strings_car.xml index 869960afcbd7..65a90f82771f 100644 --- a/packages/SystemUI/res/values-it/strings_car.xml +++ b/packages/SystemUI/res/values-it/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Sconosciuto"</string> + <string name="start_driving" msgid="864023351402918991">"Inizia la guida"</string> </resources> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 6309d1443437..1768008986b0 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -471,8 +471,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"פרופיל העבודה שלך מנוהל על ידי <xliff:g id="ORGANIZATION">%1$s</xliff:g>. הפרופיל מחובר לאפליקציה <xliff:g id="APPLICATION">%2$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת, כולל הודעות אימייל, אפליקציות ואתרים.\n\nלמידע נוסף, פנה למנהל המערכת."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"פרופיל העבודה שלך מנוהל על ידי <xliff:g id="ORGANIZATION">%1$s</xliff:g>. הפרופיל מחובר לאפליקציה <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת, כולל הודעות אימייל, אפליקציות ואתרים.\n\nהפרופיל מחובר גם לאפליקציה <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"הנעילה בוטלה על ידי <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> פועל"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"המכשיר יישאר נעול עד שתבטל את נעילתו באופן ידני"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"קבל התראות מהר יותר"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"צפה בהן לפני שתבטל נעילה"</string> @@ -583,6 +582,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 דקות"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 דקות"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"שעה אחת"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ביטול"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"נדחה לטיפול בעוד <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"שימוש בסוללה"</string> @@ -640,7 +641,7 @@ <string name="headset" msgid="4534219457597457353">"אוזניות"</string> <string name="accessibility_status_bar_headphones" msgid="9156307120060559989">"אוזניות מחוברות"</string> <string name="accessibility_status_bar_headset" msgid="8666419213072449202">"אוזניות מחוברות"</string> - <string name="data_saver" msgid="5037565123367048522">"חוסך הנתונים<br>(Data Saver)"</string> + <string name="data_saver" msgid="5037565123367048522">"חוסך הנתונים (Data Saver)"</string> <string name="accessibility_data_saver_on" msgid="8454111686783887148">"חוסך הנתונים (Data Saver) פועל"</string> <string name="accessibility_data_saver_off" msgid="8841582529453005337">"חוסך הנתונים (Data Saver) כבוי"</string> <string name="switch_bar_on" msgid="1142437840752794229">"פועל"</string> diff --git a/packages/SystemUI/res/values-iw/strings_car.xml b/packages/SystemUI/res/values-iw/strings_car.xml index 5d5b91dbc36e..d17209440d83 100644 --- a/packages/SystemUI/res/values-iw/strings_car.xml +++ b/packages/SystemUI/res/values-iw/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"לא ידוע"</string> + <string name="start_driving" msgid="864023351402918991">"עבור למצב נהיגה"</string> </resources> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index af4f1930dde9..f39e0f5a0ac9 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"この仕事用プロファイルは<xliff:g id="ORGANIZATION">%1$s</xliff:g>によって管理され、<xliff:g id="APPLICATION">%2$s</xliff:g> に接続しています。このアプリはあなたの仕事のネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。\n\n詳しくは管理者にお問い合わせください。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"この仕事用プロファイルは<xliff:g id="ORGANIZATION">%1$s</xliff:g>によって管理され、<xliff:g id="APPLICATION_WORK">%2$s</xliff:g> に接続しています。このアプリはあなたの仕事のネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を管理できます。\n\nまた、<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> にも接続しているため、あなたの個人のネットワーク アクティビティも監視できます。"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> さんのロックを解除しました"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> を実行しています"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"手動でロックを解除するまでロックされたままとなります"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"通知をすばやく確認できます"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ロックを解除する前にご確認ください"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15分"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30分"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1時間"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"元に戻す"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"スヌーズ: <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"電池の使用状況"</string> diff --git a/packages/SystemUI/res/values-ja/strings_car.xml b/packages/SystemUI/res/values-ja/strings_car.xml index c40e4309dd96..15caa95b644d 100644 --- a/packages/SystemUI/res/values-ja/strings_car.xml +++ b/packages/SystemUI/res/values-ja/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"不明"</string> + <string name="start_driving" msgid="864023351402918991">"運転を開始"</string> </resources> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 39b02707ab84..1eb194afa966 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"თქვენს სამსახურის პროფილს მართავს <xliff:g id="ORGANIZATION">%1$s</xliff:g>. პროფილი დაკავშირებულია <xliff:g id="APPLICATION">%2$s</xliff:g>-თან, რომელსაც შეუძლია ქსელში თქვენი სამსახურეობრივი აქტივობის (მათ შორის, ელფოსტის, აპებისა და ვებსაიტების) მონიტორინგი.\n\nდამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"თქვენს სამსახურის პროფილს მართავს <xliff:g id="ORGANIZATION">%1$s</xliff:g>. პროფილი დაკავშირებულია <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>-თან, რომელსაც შეუძლია ქსელში თქვენი სამსახურეობრივი აქტივობის (მათ შორის, ელფოსტის, აპებისა და ვებსაიტების) მონიტორინგი.\n\nგარდა ამისა, თქვენ დაკავშირებული ხართ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>-თან, რომელსაც ქსელში თქვენი პირადი აქტივობის მონიტორინგი შეუძლია."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"განბლოკილია მომხმარებლისთვის: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> გაშვებულია"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"მოწყობილობის დარჩება ჩაკეტილი, სანამ ხელით არ გახსნით"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"შეტყობინებების უფრო სწრაფად მიღება"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"იხილეთ განბლოკვამდე"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 წუთი"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 წუთი"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 საათი"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"მოქმედების გაუქმება"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"ჩაჩუმებული იქნება <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ბატარეის მოხმარება"</string> diff --git a/packages/SystemUI/res/values-ka/strings_car.xml b/packages/SystemUI/res/values-ka/strings_car.xml index b5acacd93410..d6f5693fd270 100644 --- a/packages/SystemUI/res/values-ka/strings_car.xml +++ b/packages/SystemUI/res/values-ka/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"უცნობი"</string> + <string name="start_driving" msgid="864023351402918991">"დაიწყეთ მართვა"</string> </resources> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 562d272d3f5e..c46573477e94 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Жұмыс профиліңізді <xliff:g id="ORGANIZATION">%1$s</xliff:g> басқарады. Бұл профиль жұмыс желісіндегі белсенділігіңізді, соның ішінде электрондық хабарларды, қолданбаларды және веб-сайттарды бақылай алатын <xliff:g id="APPLICATION">%2$s</xliff:g> қолданбасына қосылған.\n\nҚосымша ақпарат алу үшін әкімшіге хабарласыңыз."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Жұмыс профиліңізді <xliff:g id="ORGANIZATION">%1$s</xliff:g> басқарады. Бұл профиль жұмыс желісіндегі белсенділігіңізді, соның ішінде электрондық хабарларды, қолданбаларды және веб-сайттарды бақылай алатын <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> қолданбасына қосылған.\n\nСондай-ақ сіз жеке желідегі белсенділігіңізді бақылай алатын <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> қолданбасына қосылғансыз."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> үшін құлпы ашылды"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> белсенді"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Қолмен бекітпесін ашқанша құрылғы бекітілген күйде қалады"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Хабарландыруларды тезірек алу"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Бекітпесін ашу алдында оларды көру"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 минут"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 минут"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 сағат"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"КЕРІ ҚАЙТАРУ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> кідіртілді"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Батареяны пайдалану"</string> diff --git a/packages/SystemUI/res/values-kk/strings_car.xml b/packages/SystemUI/res/values-kk/strings_car.xml index c7cddc396f01..d8c6337a2e3c 100644 --- a/packages/SystemUI/res/values-kk/strings_car.xml +++ b/packages/SystemUI/res/values-kk/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Белгісіз"</string> + <string name="start_driving" msgid="864023351402918991">"Жүргізуді бастау"</string> </resources> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index ca9bae443111..7640d250e97b 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"កម្រងព័ត៌មានការងាររបស់អ្នកស្ថិតក្រោមការគ្រប់គ្រងរបស់ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ។ កម្រងព័ត៌មាននេះត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION">%2$s</xliff:g> ដែលអាចតាមដានសកម្មភាពបណ្តាញរបស់អ្នក រួមទាំងអ៊ីមែល កម្មវិធី និងគេហទំព័រផងដែរ។\n\nសម្រាប់ព័ត៌មានបន្ថែម សូមទាក់ទងទៅអ្នកគ្រប់គ្រងរបស់អ្នក។"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"កម្រងព័ត៌មានការងាររបស់អ្នកស្ថិតក្រោមគ្រប់គ្រងរបស់ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ។ កម្រងព័ត៌មាននេះត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ដែលអាចតាមដានសកម្មភាពបណ្តាញរបស់អ្នក រួមទាំងអ៊ីមែល កម្មវិធី និងគេហទំព័រផងដែរ។\n\nអ្នកក៏ត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ដែលអាចតាមដានសកម្មភាពបណ្តាញផ្ទាល់ខ្លួនរបស់អ្នក។"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"បានដោះសោសម្រាប់ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> កំពុងដំណើរការ"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ឧបករណ៍នឹងចាក់សោរហូតដល់អ្នកដោះសោដោយដៃ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ទទួលបានការជូនដំណឹងកាន់តែលឿន"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ឃើញពួកវាមុនពេលដោះសោ"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 នាទី"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 នាទី"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ម៉ោង"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"មិនធ្វើវិញ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"បានផ្អាករយៈពេល <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ការប្រើប្រាស់ថ្ម"</string> diff --git a/packages/SystemUI/res/values-km/strings_car.xml b/packages/SystemUI/res/values-km/strings_car.xml index 4aec62adcab9..5c9b1d679306 100644 --- a/packages/SystemUI/res/values-km/strings_car.xml +++ b/packages/SystemUI/res/values-km/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"មិនស្គាល់"</string> + <string name="start_driving" msgid="864023351402918991">"ចាប់ផ្តើមបើកបរ"</string> </resources> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index f797f95839cd..3b1c7ade7f22 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು <xliff:g id="ORGANIZATION">%1$s</xliff:g> ನಿರ್ವಹಿಸುತ್ತಿದೆ. <xliff:g id="APPLICATION">%2$s</xliff:g> ಗೆ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಕಾರಣ, ಅದು ನಿಮ್ಮ ಇಮೇಲ್ಗಳು, ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹಾಗೂ ವೆಬ್ಸೈಟ್ಗಳೂ ಸೇರಿದಂತೆ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು.\n\nಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು <xliff:g id="ORGANIZATION">%1$s</xliff:g> ನಿರ್ವಹಿಸುತ್ತಿದೆ. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ಗೆ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಕಾರಣ, ಅದು ನಿಮ್ಮ ಇಮೇಲ್ಗಳು, ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವೆಬ್ಸೈಟ್ಗಳೂ ಸೇರಿದಂತೆ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು.\n\nನೀವು <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ಗೆ ಕೂಡಾ ಸಂಪರ್ಕಗೊಂಡಿದ್ದೀರಿ, ಇದು ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> ಗಾಗಿ ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ಚಾಲನೆಯಲ್ಲಿದೆ"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ನೀವಾಗಿಯೇ ಅನ್ಲಾಕ್ ಮಾಡುವವರೆಗೆ ಸಾಧನವು ಲಾಕ್ ಆಗಿಯೇ ಇರುತ್ತದೆ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ವೇಗವಾಗಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ನೀವು ಅನ್ಲಾಕ್ ಮಾಡುವ ಮೊದಲೇ ಅವುಗಳನ್ನು ನೋಡಿ"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 ನಿಮಿಷಗಳು"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 ನಿಮಿಷಗಳು"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ಗಂಟೆ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ರದ್ದುಮಾಡಿ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> ಗೆ ಸ್ನೂಜ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ಬ್ಯಾಟರಿ ಬಳಕೆ"</string> diff --git a/packages/SystemUI/res/values-kn/strings_car.xml b/packages/SystemUI/res/values-kn/strings_car.xml index a1e1d89e0e0a..bc1f7fce3082 100644 --- a/packages/SystemUI/res/values-kn/strings_car.xml +++ b/packages/SystemUI/res/values-kn/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"ಅಪರಿಚಿತ"</string> + <string name="start_driving" msgid="864023351402918991">"ಡ್ರೈವ್ ಮಾಡಲು ಆರಂಭಿಸಿ"</string> </resources> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 132a24571069..434c6744a433 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"직장 프로필은 <xliff:g id="ORGANIZATION">%1$s</xliff:g>에서 관리합니다. 프로필이 <xliff:g id="APPLICATION">%2$s</xliff:g>에 연결되어 이메일, 앱, 웹사이트와 같은 직장 네트워크 활동을 모니터링할 수 있습니다.\n\n자세한 내용을 확인하려면 관리자에게 문의하세요."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"직장 프로필은 <xliff:g id="ORGANIZATION">%1$s</xliff:g>에서 관리합니다. 이 프로필은 <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>에 연결되어 이메일, 앱, 웹사이트와 같은 직장 네트워크 활동을 모니터링할 수 있습니다.\n\n개인 네트워크 활동을 모니터링할 수 있는 <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>에도 연결됩니다."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>님 잠금 해제됨"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> 실행 중"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"수동으로 잠금 해제할 때까지 기기가 잠금 상태로 유지됩니다."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"알림을 더욱 빠르게 받기"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"잠금 해제하기 전에 알림을 봅니다."</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15분"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30분"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1시간"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"실행취소"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> 동안 일시 중지됨"</string> <string name="battery_panel_title" msgid="7944156115535366613">"배터리 사용량"</string> diff --git a/packages/SystemUI/res/values-ko/strings_car.xml b/packages/SystemUI/res/values-ko/strings_car.xml index 640a1d55c7fe..6d31bbf54e7f 100644 --- a/packages/SystemUI/res/values-ko/strings_car.xml +++ b/packages/SystemUI/res/values-ko/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"알 수 없음"</string> + <string name="start_driving" msgid="864023351402918991">"운전 시작"</string> </resources> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 82e91909b747..0d2517bd030d 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Жумуш профилиңизди <xliff:g id="ORGANIZATION">%1$s</xliff:g> башкарат. Ал электрондук почта, колдонмолор жана вебсайттар сыяктуу жумуш тармагыңыздагы аракеттерди көзөмөлдөй турган <xliff:g id="APPLICATION">%2$s</xliff:g> колдонмосуна туташкан.\n\nКөбүрөөк маалымат алуу үчүн администраторуңузга кайрылыңыз."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Жумуш профилиңизди <xliff:g id="ORGANIZATION">%1$s</xliff:g> башкарат. Ал электрондук почта, колдонмолор жана вебсайттар сыяктуу жумуш тармагыңыздагы аракеттерди көзөмөлдөй турган <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> колдонмосуна туташкан.\n\nМындан тышкары, тармактагы жеке аракеттериңизди көзөмөлдөгөн <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> колдонмосуна туташып турасыз."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> үчүн кулпусу ачылды"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> иштеп жатат"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Түзмөктүн кулпусу кол менен ачылмайынча кулпуланган бойдон алат"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Эскертмелерди тезирээк алуу"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Аларды кулпудан чыгараардан мурун көрүңүз"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 мүнөт"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 мүнөт"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 саат"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"КАЙТАРУУ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> тындырылды"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Батарея колдонулушу"</string> diff --git a/packages/SystemUI/res/values-ky/strings_car.xml b/packages/SystemUI/res/values-ky/strings_car.xml index 2e76c883edb6..51a46b95cd3b 100644 --- a/packages/SystemUI/res/values-ky/strings_car.xml +++ b/packages/SystemUI/res/values-ky/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Белгисиз"</string> + <string name="start_driving" msgid="864023351402918991">"Унаа айдап баштоо"</string> </resources> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index b82d4a835aea..84a51c136aa7 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານແມ່ນຖືກຈັດການໂດຍ <xliff:g id="ORGANIZATION">%1$s</xliff:g>. ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກດັ່ງກ່າວເຊື່ອມຕໍ່ຫາ <xliff:g id="APPLICATION">%2$s</xliff:g>, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍຂອງທ່ານ, ຮວມທັງອີເມວ, ແອັບ ແລະ ເວັບໄຊໄດ້.\nສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ໃຫ້ຕິດຕໍ່ຫາຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ\n."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານແມ່ນຖືກຈັດການໂດຍ <xliff:g id="ORGANIZATION">%1$s</xliff:g>. ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກດັ່ງກ່າວເຊື່ອມຕໍ່ຫາ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍຂອງທ່ານ, ຮວມທັງອີເມວ, ແອັບ ແລະ ເວັບໄຊໄດ້.\n\nນອກຈາກນັ້ນ, ທ່ານຍັງເຊື່ອມຕໍ່ຫາ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍສ່ວນຕົວຂອງທ່ານໄດ້."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"ປົດລັອກສຳລັບ <xliff:g id="USER_NAME">%1$s</xliff:g> ແລ້ວ"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ກຳລັງເຮັດວຽກຢູ່"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ຮັບເອົາການແຈ້ງເຕືອນໄວຂຶ້ນ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ເບິ່ງພວກມັນກ່ອນທ່ານຈະປົດລັອກ"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 ນາທີ"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 ນາທີ"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ຊົ່ວໂມງ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ຍົກເລີກ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"ເລື່ອນໄປ <xliff:g id="TIME_AMOUNT">%1$s</xliff:g> ນາທີແລ້ວ"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ການໃຊ້ແບັດເຕີຣີ"</string> diff --git a/packages/SystemUI/res/values-lo/strings_car.xml b/packages/SystemUI/res/values-lo/strings_car.xml index f51074ab0fd7..038e43bdb453 100644 --- a/packages/SystemUI/res/values-lo/strings_car.xml +++ b/packages/SystemUI/res/values-lo/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"ບໍ່ຮູ້ຈັກ"</string> + <string name="start_driving" msgid="864023351402918991">"ເລີ່ມການຂັບ"</string> </resources> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 68fdf6fbcb48..6fa17d1b655c 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -471,8 +471,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jūsų darbo profilį tvarko „<xliff:g id="ORGANIZATION">%1$s</xliff:g>“. Profilis susietas su programa „<xliff:g id="APPLICATION">%2$s</xliff:g>“, kuri gali stebėti jūsų tinklo veiklą, įskaitant el. laiškus, programas ir svetaines.\n\nJei reikia daugiau informacijos, susisiekite su administratoriumi."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jūsų darbo profilį tvarko „<xliff:g id="ORGANIZATION">%1$s</xliff:g>“. Profilis susietas su programa „<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>“, kuri gali stebėti jūsų tinklo veiklą, įskaitant el. laiškus, programas ir svetaines.\n\nTaip pat esate prisijungę prie programos „<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>“, kuri gali stebėti asmeninio tinklo veiklą."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Atrakinta (<xliff:g id="USER_NAME">%1$s</xliff:g>)"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"„<xliff:g id="TRUST_AGENT">%1$s</xliff:g>“ vykdoma"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Įrenginys liks užrakintas, kol neatrakinsite jo neautomatiniu būdu"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Greičiau gaukite pranešimus"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Peržiūrėti prieš atrakinant"</string> @@ -583,6 +582,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 min."</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 min."</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 val."</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANULIUOTI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Nustatyta snausti <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Akum. energ. vartoj."</string> diff --git a/packages/SystemUI/res/values-lt/strings_car.xml b/packages/SystemUI/res/values-lt/strings_car.xml index 62b6f51df7c7..4bdd5a7f0d10 100644 --- a/packages/SystemUI/res/values-lt/strings_car.xml +++ b/packages/SystemUI/res/values-lt/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Nežinoma"</string> + <string name="start_driving" msgid="864023351402918991">"Pradėti vairuoti"</string> </resources> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 5803b682ae2d..ce6bba9018c7 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jūsu darba profilu pārvalda <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profils ir saistīts ar lietotni <xliff:g id="APPLICATION">%2$s</xliff:g>, kura var pārraudzīt jūsu tīklā veiktās darbības, tostarp saņemtos un nosūtītos e-pasta ziņojumus, izmantotās lietotnes un apmeklētās tīmekļa vietnes.\n\nLai iegūtu plašāku informāciju, sazinieties ar administratoru."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jūsu darba profilu pārvalda <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profils ir saistīts ar lietotni <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, kura var pārraudzīt jūsu tīklā veiktās darbības, tostarp saņemtos un nosūtītos e-pasta ziņojumus, instalētās lietotnes un apmeklētās tīmekļa vietnes.\n\nIr izveidots savienojums ar lietotni <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, kas var pārraudzīt jūsu tīklā veiktās privātās darbības, tostarp saņemtos un nosūtītos e-pasta ziņojumus, instalētās lietotnes un apmeklētās tīmekļa vietnes."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Atbloķēta lietotājam <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> darbojas"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Ierīce būs bloķēta, līdz to manuāli atbloķēsiet."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Saņemiet paziņojumus ātrāk"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Skatiet tos pirms atbloķēšanas."</string> @@ -579,6 +578,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minūtes"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minūtes"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 stunda"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ATSAUKT"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Atlikts: <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Akumulatora lietojums"</string> diff --git a/packages/SystemUI/res/values-lv/strings_car.xml b/packages/SystemUI/res/values-lv/strings_car.xml index 19b1007d481a..d804f8644ac9 100644 --- a/packages/SystemUI/res/values-lv/strings_car.xml +++ b/packages/SystemUI/res/values-lv/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Nezināms"</string> + <string name="start_driving" msgid="864023351402918991">"Sākt braukšanu"</string> </resources> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 2fa6b24056af..b91fd1829f06 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> управува со вашиот работен профил. Профилот е поврзан на <xliff:g id="APPLICATION">%2$s</xliff:g>, што може да ја следи вашата работна активност на мрежата, заедно со е-пораките, апликациите и веб-сајтовите.\n\nЗа повеќе информации, контактирајте со вашиот администратор."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> управува со вашиот работен профил. Профилот е поврзан на <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, што може да ја следи вашата работна активност на мрежата, заедно со е-пораките, апликациите и веб-сајтовите.\n\nПоврзани сте и на <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, што може да ја следи вашата лична активност на мрежата."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Отклучен за <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> работи"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Уредот ќе остане заклучен додека рачно не го отклучите"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Добивајте известувања побрзо"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Видете ги пред да отклучите"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 минути"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 минути"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 час"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ВРАТИ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Одложено за <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Користење батерија"</string> diff --git a/packages/SystemUI/res/values-mk/strings_car.xml b/packages/SystemUI/res/values-mk/strings_car.xml index 8889bd3929e7..9220ccb43973 100644 --- a/packages/SystemUI/res/values-mk/strings_car.xml +++ b/packages/SystemUI/res/values-mk/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Непознато"</string> + <string name="start_driving" msgid="864023351402918991">"Започнете да возите"</string> </resources> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 11d4c8fdb3f4..f96f6599b20b 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ആണ് നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ മാനേജുചെയ്യുന്നത്. <xliff:g id="APPLICATION">%2$s</xliff:g> ആപ്പിലേക്ക് പ്രൊഫൈൽ കണക്റ്റുചെയ്തിരിക്കുന്നു, അതിന് ഇമെയിലുകൾ, ആപ്പുകൾ, വെബ്സൈറ്റുകൾ എന്നിവ ഉൾപ്പെടെ നിങ്ങളുടെ ഔദ്യോഗിക നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാനാകും.\n\nകൂടുതൽ വിവരങ്ങൾക്ക് നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ആണ് നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ മാനേജുചെയ്യുന്നത്. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ആപ്പിലേക്ക് പ്രൊഫൈൽ കണക്റ്റുചെയ്തിരിക്കുന്നു, അതിന് ഇമെയിലുകൾ, ആപ്പുകൾ, വെബ്സൈറ്റുകൾ എന്നിവ ഉൾപ്പെടെ നിങ്ങളുടെ ഔദ്യോഗിക നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാനാകും.\n\n<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ആപ്പിലേക്കും നിങ്ങൾ കണക്റ്റുചെയ്തിരിക്കുന്നു, അതിന് നിങ്ങളുടെ വ്യക്തിഗത നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാനാകും."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> എന്നയാൾക്കായി അൺലോക്കുചെയ്തു"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> റൺ ചെയ്യുന്നു"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"നിങ്ങൾ സ്വമേധയാ അൺലോക്കുചെയ്യുന്നതുവരെ ഉപകരണം ലോക്കുചെയ്തതായി തുടരും"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"അറിയിപ്പുകൾ വേഗത്തിൽ സ്വീകരിക്കുക"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"അൺലോക്കുചെയ്യുന്നതിന് മുമ്പ് അവ കാണുക"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 മിനിറ്റ്"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 മിനിറ്റ്"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"ഒരു മണിക്കൂർ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"പഴയപടിയാക്കുക"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> സമയത്തേക്ക് സ്നൂസ് ചെയ്തു"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ബാറ്ററി ഉപയോഗം"</string> diff --git a/packages/SystemUI/res/values-ml/strings_car.xml b/packages/SystemUI/res/values-ml/strings_car.xml index e47212324237..eb4e1e667f3a 100644 --- a/packages/SystemUI/res/values-ml/strings_car.xml +++ b/packages/SystemUI/res/values-ml/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"അറിഞ്ഞുകൂടാത്തത്"</string> + <string name="start_driving" msgid="864023351402918991">"ഡ്രൈവ് ചെയ്തുതുടങ്ങുക"</string> </resources> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index b34aced53c6e..75c3a8a771ef 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -574,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 минут"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 минут"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 цаг"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"БУЦААХ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g>-д түр хойшлуулсан"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Тэжээл ашиглалт"</string> diff --git a/packages/SystemUI/res/values-mn/strings_car.xml b/packages/SystemUI/res/values-mn/strings_car.xml index d5d359847ee8..74b983a26bc0 100644 --- a/packages/SystemUI/res/values-mn/strings_car.xml +++ b/packages/SystemUI/res/values-mn/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Тодорхойгүй"</string> + <string name="start_driving" msgid="864023351402918991">"Жолоо барьж эхлэх"</string> </resources> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 560beb0ad704..98785fffba21 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"आपले कार्य प्रोफाइल <xliff:g id="ORGANIZATION">%1$s</xliff:g> द्वारे व्यवस्थापित केले जाते. प्रोफाइल <xliff:g id="APPLICATION">%2$s</xliff:g> शी कनेक्ट केले आहे, जे ईमेल, अॅप्स आणि वेबसाइटसह आपल्या कार्य नेटवर्क क्रियाकलापाचे परीक्षण करू शकते.\n\nअधिक माहितीसाठी, आपल्या प्रशासकाशी संपर्क साधा."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"आपले कार्य प्रोफाइल <xliff:g id="ORGANIZATION">%1$s</xliff:g> द्वारे व्यवस्थापित केले जाते. प्रोफाइल <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> शी कनेक्ट केले आहे, जे ईमेल, अॅप्स आणि वेबसाइटसह आपल्या कार्य नेटवर्क क्रियाकलापाचे परीक्षण करू शकते.\n\nआपण <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> शीदेखील कनेक्ट केले आहे, जे आपल्या वैयक्तिक नेटवर्क क्रियाकलापाचे परीक्षण करू शकते."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> साठी अनलॉक केले"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> चालू आहे"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"आपण व्यक्तिचलितपणे अनलॉक करेपर्यंत डिव्हाइस लॉक केलेले राहील"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"सूचना अधिक जलद मिळवा"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"आपण अनलॉक करण्यापूर्वी त्यांना पहा"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 मिनिटे"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 मिनिटे"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 तास"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"पूर्ववत करा"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> साठी स्नूझ करा"</string> <string name="battery_panel_title" msgid="7944156115535366613">"बॅटरी वापर"</string> diff --git a/packages/SystemUI/res/values-mr/strings_car.xml b/packages/SystemUI/res/values-mr/strings_car.xml index a7a43790349a..5d66f14ad887 100644 --- a/packages/SystemUI/res/values-mr/strings_car.xml +++ b/packages/SystemUI/res/values-mr/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"अज्ञात"</string> + <string name="start_driving" msgid="864023351402918991">"वाहन चालवणे सुरू करा"</string> </resources> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index 27a8e31dc829..e64f78d7d2de 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profil kerja anda diurus oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil itu dihubungkan ke <xliff:g id="APPLICATION">%2$s</xliff:g>, yang boleh memantau aktiviti rangkaian kerja anda, termasuk e-mel, apl dan tapak web.\n\nUntuk mendapatkan maklumat lanjut, hubungi pentadbir anda."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profil kerja anda diurus oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil itu dihubungkan ke <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, yang boleh memantau aktiviti rangkaian kerja anda, termasuk e-mel, apl dan tapak web.\n\nAnda turut dihubungkan ke <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, yang boleh memantau aktiviti rangkaian peribadi anda."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Kunci dibuka untuk <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> sedang berjalan"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Peranti akan kekal terkunci sehingga anda membuka kunci secara manual"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Dapatkan pemberitahuan lebih cepat"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Lihat sebelum anda membuka kunci"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minit"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minit"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 jam"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"BUAT ASAL"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Ditunda selama <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Penggunaan bateri"</string> diff --git a/packages/SystemUI/res/values-ms/strings_car.xml b/packages/SystemUI/res/values-ms/strings_car.xml index 8f640accb9ba..0daa093d5c3e 100644 --- a/packages/SystemUI/res/values-ms/strings_car.xml +++ b/packages/SystemUI/res/values-ms/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Tidak diketahui"</string> + <string name="start_driving" msgid="864023351402918991">"Mulakan Pemanduan"</string> </resources> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 6765e1c165f2..cf101d4781e6 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -574,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"၁၅ မိနစ်"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"၃၀ မိနစ်"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"၁ နာရီ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"တစ်ဆင့် နောက်ပြန်ပြန်ပါ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> ဆိုင်းငံ့ရန်"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ဘက်ထရီ အသုံးပြုမှု"</string> diff --git a/packages/SystemUI/res/values-my/strings_car.xml b/packages/SystemUI/res/values-my/strings_car.xml index 5f0ab8e649ae..c2700c4cbf88 100644 --- a/packages/SystemUI/res/values-my/strings_car.xml +++ b/packages/SystemUI/res/values-my/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"အမျိုးအမည်မသိ"</string> + <string name="start_driving" msgid="864023351402918991">"စတင် မောင်းနှင်ရန်"</string> </resources> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index a8067a253c11..321934cda64c 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jobbprofilen din administreres av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen er koblet til <xliff:g id="APPLICATION">%2$s</xliff:g>, som kan overvåke nettverksaktiviteten din på jobben, inkludert e-poster, apper og nettsteder.\n\nTa kontakt med administratoren hvis du vil ha mer informasjon."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jobbprofilen din administreres av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen er koblet til <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, som kan overvåke nettverksaktiviteten din på jobben, inkludert e-poster, apper og nettsteder.\n\nDu er også koblet til <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, som kan overvåke den personlige nettverksaktiviteten din."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Låst opp for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> kjører"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheten forblir låst til du låser den opp manuelt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Motta varsler raskere"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Se dem før du låser opp"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutter"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutter"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 time"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANGRE"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Slumrer i <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Batteribruk"</string> diff --git a/packages/SystemUI/res/values-nb/strings_car.xml b/packages/SystemUI/res/values-nb/strings_car.xml index 17d050d7767d..2a1b3ca07a0b 100644 --- a/packages/SystemUI/res/values-nb/strings_car.xml +++ b/packages/SystemUI/res/values-nb/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Ukjent"</string> + <string name="start_driving" msgid="864023351402918991">"Begynn å kjøre"</string> </resources> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index fadb9c481072..9a4c5aca5b8f 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ले तपाईंको कार्य प्रोफाइलको व्यवस्थापन गर्छ। उक्त प्रोफाइल तपाईंका इमेल, अनुप्रयोग र वेवसाइटहरू लगायत तपाईंको नेटवर्कको गतिविधिको अनुगमन गर्नसक्ने <xliff:g id="APPLICATION">%2$s</xliff:g> मा जडान छ।\n\nथप जानकारीका लागि, आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ले तपाईंको कार्य प्रोफाइलको व्यवस्थापन गर्छ। उक्त प्रोफाइल तपाईंका इमेल, अनुप्रयोग र वेवसाइटहरू लगायत तपाईंको नेटवर्कको गतिविधिको अनुगमन गर्नसक्ने <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> मा जडान छ। \n\nतपाईं आफ्नो व्यक्तिगत नेटवर्कको गतिविधिको अनुगमन गर्नसक्ने <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> मा पनि जडान हुनुहुन्छ।"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> का लागि अनलक गरियो"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> चल्दै छ"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"तपाईँले नखोले सम्म उपकरण बन्द रहनेछ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"छिटो सूचनाहरू प्राप्त गर्नुहोस्"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"तपाईँले अनलक गर्नअघि तिनीहरूलाई हेर्नुहोस्"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"१५ मिनेट"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"३० मिनेट"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"१ घन्टा"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"अनडू गर्नुहोस्"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> का लागि स्नुज गरियो"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ब्याट्री उपयोग"</string> diff --git a/packages/SystemUI/res/values-ne/strings_car.xml b/packages/SystemUI/res/values-ne/strings_car.xml index a7a43790349a..d81a488bb2e7 100644 --- a/packages/SystemUI/res/values-ne/strings_car.xml +++ b/packages/SystemUI/res/values-ne/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"अज्ञात"</string> + <string name="start_driving" msgid="864023351402918991">"ड्राइभिङ सुरू गर्नुहोस्"</string> </resources> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 095b4d38c57c..1cd56b924cf9 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Je werkprofiel wordt beheerd door <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Het profiel is verbonden met <xliff:g id="APPLICATION">%2$s</xliff:g>, waarmee je werkgerelateerde netwerkactiviteit (waaronder e-mails, apps en websites) kan worden bijgehouden.\n\nNeem contact op met je beheerder voor meer informatie."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Je werkprofiel wordt beheerd door <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Het profiel is verbonden met <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, waarmee je werkgerelateerde netwerkactiviteit (waaronder e-mails, apps en websites) kan worden bijgehouden.\n\nJe bent ook verbonden met <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, waarmee je persoonlijke netwerkactiviteit kan worden bijgehouden."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ontgrendeld voor <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is actief"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Het apparaat blijft vergrendeld totdat u het handmatig ontgrendelt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Sneller meldingen ontvangen"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Weergeven voordat u ontgrendelt"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuten"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuten"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 uur"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ONGEDAAN MAKEN"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Snoozefunctie <xliff:g id="TIME_AMOUNT">%1$s</xliff:g> actief"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Accugebruik"</string> diff --git a/packages/SystemUI/res/values-nl/strings_car.xml b/packages/SystemUI/res/values-nl/strings_car.xml index a8f600e81e77..32582e5452e8 100644 --- a/packages/SystemUI/res/values-nl/strings_car.xml +++ b/packages/SystemUI/res/values-nl/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Onbekend"</string> + <string name="start_driving" msgid="864023351402918991">"Beginnen met rijden"</string> </resources> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 17e399c5c681..4b752dccb852 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"ਤੁਹਾਡੇ ਕਾਰਜ ਪ੍ਰੋਫ਼ਾਈਲ ਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਪ੍ਰੋਫ਼ਾਈਲ <xliff:g id="APPLICATION">%2$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਹੈ, ਜੋ ਈਮੇਲਾਂ, ਐਪਾਂ, ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਸਮੇਤ ਤੁਹਾਡੀ ਕਾਰਜ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ਤੁਹਾਡੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਪ੍ਰੋਫਾਈਲ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੋ ਈਮੇਲਾਂ, ਐਪਾਂ, ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਸਮੇਤ ਤੁਹਾਡੀ ਕਾਰਜ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।\n\nਤੁਸੀਂ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ਨਾਲ ਵੀ ਕਨੈਕਟ ਹੋਂ, ਜੋ ਤੁਹਾਡੀ ਨਿੱਜੀ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> ਲਈ ਅਨਲੌਕ ਕੀਤੀ ਗਈ"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ਡੀਵਾਈਸ ਲੌਕ ਰਹੇਗੀ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਮੈਨੂਅਲੀ ਅਨਲੌਕ ਨਹੀਂ ਕਰਦੇ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ਤੇਜ਼ੀ ਨਾਲ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ਅਨਲੌਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਦੇਖੋ"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 ਮਿੰਟ"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 ਮਿੰਟ"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ਘੰਟਾ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ਅਣਕੀਤਾ ਕਰੋ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> ਲਈ ਸਨੂਜ਼ ਕੀਤਾ ਗਿਆ"</string> <string name="battery_panel_title" msgid="7944156115535366613">"ਬੈਟਰੀ ਵਰਤੋਂ"</string> diff --git a/packages/SystemUI/res/values-pa/strings_car.xml b/packages/SystemUI/res/values-pa/strings_car.xml index ff68d0e90dbd..1c023a389fe6 100644 --- a/packages/SystemUI/res/values-pa/strings_car.xml +++ b/packages/SystemUI/res/values-pa/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"ਅਗਿਆਤ"</string> + <string name="start_driving" msgid="864023351402918991">"ਗੱਡੀ ਚਲਾਉਣਾ ਸ਼ੁਰੂ ਕਰੋ"</string> </resources> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index a04b02aeef09..354dad69bafb 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -471,8 +471,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Organizacja <xliff:g id="ORGANIZATION">%1$s</xliff:g> zarządza Twoim profilem do pracy. Profil jest połączony z aplikacją <xliff:g id="APPLICATION">%2$s</xliff:g>, która może monitorować Twoją aktywność w sieci, w tym e-maile, aplikacje i strony internetowe.\n\nSkontaktuj się z administratorem, aby uzyskać więcej informacji."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Organizacja <xliff:g id="ORGANIZATION">%1$s</xliff:g> zarządza Twoim profilem do pracy. Profil jest połączony z aplikacją <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, która może monitorować Twoją aktywność w sieci, w tym e-maile, aplikacje i strony internetowe.\n\nMasz też połączenie z aplikacją <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, która może monitorować Twoją osobistą aktywność w sieci."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odblokowano dla: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Aplikacja <xliff:g id="TRUST_AGENT">%1$s</xliff:g> jest uruchomiona"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Urządzenie pozostanie zablokowane, aż odblokujesz je ręcznie"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Szybszy dostęp do powiadomień"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Zobacz powiadomienia, jeszcze zanim odblokujesz ekran"</string> @@ -583,6 +582,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 min"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 min"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 godz."</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"COFNIJ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Odłożono na <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Wykorzystanie baterii"</string> diff --git a/packages/SystemUI/res/values-pl/strings_car.xml b/packages/SystemUI/res/values-pl/strings_car.xml index 5a52fb672de8..0841e2717513 100644 --- a/packages/SystemUI/res/values-pl/strings_car.xml +++ b/packages/SystemUI/res/values-pl/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Brak informacji"</string> + <string name="start_driving" msgid="864023351402918991">"Uruchom tryb Jazda samochodem"</string> </resources> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index ae349b3fa2ef..8007fe7118aa 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nPara saber mais informações, entre em contato com seu administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nVocê também está conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorar sua atividade pessoal de rede."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> está em execução"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado até que você o desbloqueie manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Receba notificações mais rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Veja-as antes de desbloquear"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutos"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutos"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"Uma hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESFAZER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Adiada para <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Uso da bateria"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings_car.xml b/packages/SystemUI/res/values-pt-rBR/strings_car.xml index a00f6ae7e15c..b113ed742291 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings_car.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Desconhecido"</string> + <string name="start_driving" msgid="864023351402918991">"Começar a dirigir"</string> </resources> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index c98fd26ac0e6..645722cc3914 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -443,32 +443,31 @@ <string name="monitoring_description_managed_profile_ca_certificate" msgid="4683248196789897964">"A sua entidade instalou uma autoridade de certificação no seu perfil de trabalho. O tráfego da sua rede segura pode ser monitorizado ou alterado."</string> <string name="monitoring_description_ca_certificate" msgid="7886985418413598352">"Está instalada uma autoridade de certificação neste dispositivo. O tráfego da sua rede segura pode ser monitorizado ou alterado."</string> <string name="monitoring_description_management_network_logging" msgid="7184005419733060736">"O administrador ativou os registos de rede, que monitorizam o tráfego no seu dispositivo."</string> - <string name="monitoring_description_named_vpn" msgid="7403457334088909254">"Está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Websites."</string> - <string name="monitoring_description_two_named_vpns" msgid="4198511413729213802">"Está ligado às redes <xliff:g id="VPN_APP_0">%1$s</xliff:g> e <xliff:g id="VPN_APP_1">%2$s</xliff:g>, que podem monitorizar a sua atividade de rede, incluindo emails, aplicações e Websites."</string> - <string name="monitoring_description_managed_profile_named_vpn" msgid="1427905889862420559">"O seu perfil de trabalho está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Websites."</string> - <string name="monitoring_description_personal_profile_named_vpn" msgid="3133980926929069283">"O seu perfil pessoal está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Websites."</string> + <string name="monitoring_description_named_vpn" msgid="7403457334088909254">"Está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites."</string> + <string name="monitoring_description_two_named_vpns" msgid="4198511413729213802">"Está ligado às redes <xliff:g id="VPN_APP_0">%1$s</xliff:g> e <xliff:g id="VPN_APP_1">%2$s</xliff:g>, que podem monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites."</string> + <string name="monitoring_description_managed_profile_named_vpn" msgid="1427905889862420559">"O seu perfil de trabalho está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites."</string> + <string name="monitoring_description_personal_profile_named_vpn" msgid="3133980926929069283">"O seu perfil pessoal está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites."</string> <string name="monitoring_description_do_header_generic" msgid="96588491028288691">"O seu dispositivo é gerido pelo <xliff:g id="DEVICE_OWNER_APP">%1$s</xliff:g>."</string> <string name="monitoring_description_do_header_with_name" msgid="5511133708978206460">"A <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> utiliza o <xliff:g id="DEVICE_OWNER_APP">%2$s</xliff:g> para gerir o seu dispositivo."</string> <string name="monitoring_description_do_body" msgid="3639594537660975895">"O administ. pode monitorizar e gerir definições, acesso empresarial, aplic. e dados associados ao dispositivo, bem como inf. de localiz. do disp."</string> <string name="monitoring_description_do_learn_more_separator" msgid="3785251953067436862">" "</string> <string name="monitoring_description_do_learn_more" msgid="1849514470437907421">"Saiba mais"</string> - <string name="monitoring_description_do_body_vpn" msgid="8255218762488901796">"Está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Websites."</string> + <string name="monitoring_description_do_body_vpn" msgid="8255218762488901796">"Está ligado à rede <xliff:g id="VPN_APP">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites."</string> <string name="monitoring_description_vpn_settings_separator" msgid="1933186756733474388">" "</string> <string name="monitoring_description_vpn_settings" msgid="8869300202410505143">"Abrir as definições de VPN"</string> <string name="monitoring_description_ca_cert_settings_separator" msgid="4987350385906393626">" "</string> <string name="monitoring_description_ca_cert_settings" msgid="5489969458872997092">"Abrir credenciais fidedignas"</string> <string name="monitoring_description_network_logging" msgid="7223505523384076027">"O seu administrador ativou os registos de rede, que monitorizam o tráfego no seu dispositivo.\n\nPara obter mais informações, contacte o administrador."</string> - <string name="monitoring_description_vpn" msgid="4445150119515393526">"Concedeu autorização a uma aplicação para configurar uma ligação VPN.\n\nEsta aplicação pode monitorizar a atividade do dispositivo e da rede, incluindo emails, aplicações e Websites."</string> - <string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"O seu perfil de trabalho é gerido por <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nO seu administrador tem a capacidade de monitorizar a sua atividade da rede, incluindo emails, aplicações e Websites.\n\nPara obter mais informações, contacte o administrador.\n\nAlém disso, está ligado a uma VPN, que pode monitorizar a sua atividade da rede."</string> + <string name="monitoring_description_vpn" msgid="4445150119515393526">"Concedeu autorização a uma aplicação para configurar uma ligação VPN.\n\nEsta aplicação pode monitorizar a atividade do dispositivo e da rede, incluindo emails, aplicações e Sites."</string> + <string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"O seu perfil de trabalho é gerido por <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nO seu administrador tem a capacidade de monitorizar a sua atividade da rede, incluindo emails, aplicações e Sites.\n\nPara obter mais informações, contacte o administrador.\n\nAlém disso, está ligado a uma VPN, que pode monitorizar a sua atividade da rede."</string> <string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string> - <string name="monitoring_description_app" msgid="1828472472674709532">"Está associado à aplicação <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Websites."</string> - <string name="monitoring_description_app_personal" msgid="484599052118316268">"Está ligado a <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Websites."</string> - <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Está ligado ao <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Websites."</string> - <string name="monitoring_description_app_work" msgid="4612997849787922906">"O seu perfil de trabalho é gerido pela <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está associado à aplicação <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Websites.\n\nContacte o administrador para obter mais informações."</string> - <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"O seu perfil de trabalho é gerido pela <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está associado à aplicação <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Websites.\n\nTambém está associado à aplicação <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorizar a atividade da rede pessoal."</string> + <string name="monitoring_description_app" msgid="1828472472674709532">"Está associado à aplicação <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites."</string> + <string name="monitoring_description_app_personal" msgid="484599052118316268">"Está ligado a <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Sites."</string> + <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Está ligado ao <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Sites."</string> + <string name="monitoring_description_app_work" msgid="4612997849787922906">"O seu perfil de trabalho é gerido pela <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está associado à aplicação <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nContacte o administrador para obter mais informações."</string> + <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"O seu perfil de trabalho é gerido pela <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está associado à aplicação <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nTambém está associado à aplicação <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorizar a atividade da rede pessoal."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> em execução"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado até ser desbloqueado manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Receber notificações mais rapidamente"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ver antes de desbloquear"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutos"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutos"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANULAR"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Suspensa por <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Utiliz. da bateria"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings_car.xml b/packages/SystemUI/res/values-pt-rPT/strings_car.xml index a00f6ae7e15c..6a8b40d51e8a 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings_car.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Desconhecido"</string> + <string name="start_driving" msgid="864023351402918991">"Começar a conduzir"</string> </resources> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index ae349b3fa2ef..8007fe7118aa 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nPara saber mais informações, entre em contato com seu administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nVocê também está conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorar sua atividade pessoal de rede."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> está em execução"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado até que você o desbloqueie manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Receba notificações mais rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Veja-as antes de desbloquear"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minutos"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minutos"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"Uma hora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"DESFAZER"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Adiada para <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Uso da bateria"</string> diff --git a/packages/SystemUI/res/values-pt/strings_car.xml b/packages/SystemUI/res/values-pt/strings_car.xml index a00f6ae7e15c..b113ed742291 100644 --- a/packages/SystemUI/res/values-pt/strings_car.xml +++ b/packages/SystemUI/res/values-pt/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Desconhecido"</string> + <string name="start_driving" msgid="864023351402918991">"Começar a dirigir"</string> </resources> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 03ea610b6c14..0fdb950a0354 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -471,8 +471,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profilul de serviciu este gestionat de <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilul este conectat la <xliff:g id="APPLICATION">%2$s</xliff:g>, care vă poate monitoriza activitatea în rețeaua de serviciu, inclusiv e-mailurile, aplicațiile și site-urile accesate.\n\nPentru mai multe informații, contactați administratorul."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profilul de serviciu este gestionat de <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilul este conectat la <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, care vă poate monitoriza activitatea în rețeaua de serviciu, inclusiv e-mailurile, aplicațiile și site-urile accesate.\n\nDe asemenea, v-ați conectat la <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, care vă poate monitoriza activitatea în rețeaua personală."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Deblocat pentru <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> rulează"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Dispozitivul va rămâne blocat până când îl deblocați manual"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Obțineți notificări mai rapid"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Doresc să se afișeze înainte de deblocare"</string> @@ -581,6 +580,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minute"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 de minute"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 oră"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ANULAȚI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Amânată <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Utilizarea bateriei"</string> diff --git a/packages/SystemUI/res/values-ro/strings_car.xml b/packages/SystemUI/res/values-ro/strings_car.xml index e3cc04226c5a..27751f6408fb 100644 --- a/packages/SystemUI/res/values-ro/strings_car.xml +++ b/packages/SystemUI/res/values-ro/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Necunoscut"</string> + <string name="start_driving" msgid="864023351402918991">"Începeți să conduceți"</string> </resources> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 686ba108a805..64ea3ccfc39a 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -473,8 +473,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Вашим рабочим профилем управляет организация \"<xliff:g id="ORGANIZATION">%1$s</xliff:g>\". Приложение \"<xliff:g id="APPLICATION">%2$s</xliff:g>\" может отслеживать ваши действия в корпоративной сети, включая работу с электронной почтой, приложениями и веб-сайтами.\n\nЧтобы получить подробную информацию, обратитесь к администратору."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Вашим рабочим профилем управляет организация \"<xliff:g id="ORGANIZATION">%1$s</xliff:g>\". Приложение \"<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>\" может отслеживать ваши действия в корпоративной сети, включая работу с электронной почтой, приложениями и веб-сайтами.\n\nТакже запущено приложение \"<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>\", которое может отслеживать ваши действия в сети, выполняемые в личном профиле."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Разблокировано для пользователя <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Агент \"<xliff:g id="TRUST_AGENT">%1$s</xliff:g>\" работает"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Устройство необходимо будет разблокировать вручную"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Быстрый доступ к уведомлениям"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Просматривайте уведомления на заблокированном экране."</string> @@ -585,6 +584,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 минут"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 минут"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 час"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ОТМЕНИТЬ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Отложено на <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Уровень заряда"</string> diff --git a/packages/SystemUI/res/values-ru/strings_car.xml b/packages/SystemUI/res/values-ru/strings_car.xml index df03e5dead33..f697cbdd7bbb 100644 --- a/packages/SystemUI/res/values-ru/strings_car.xml +++ b/packages/SystemUI/res/values-ru/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Неизвестный пользователь"</string> + <string name="start_driving" msgid="864023351402918991">"Запустить навигацию"</string> </resources> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 3980efde1706..316ba8bbbe35 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"ඔබේ කාර්ය පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> මගිනි. ඔබේ ඊ-තැපැල්, යෙදුම්, සහ වෙබ් අඩවි ඇතුළු, ඔබේ ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION">%2$s</xliff:g> වෙත පැතිකඩ සම්බන්ධය.\n\nවැඩිදුර තොරතුරු සඳහා, ඔබගේ පරිපාලක අමතන්න."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ඔබේ කාර්යාල පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි. ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ කාර්යාල ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, වෙත පැතිකඩ සම්බන්ධ වී ඇත.\n\nඔබ ඔබේ පෞද්ගලික ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> වෙතද සම්බන්ධ වී ඇත."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> සඳහා අගුලු හරින ලදී"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ධාවනය වේ"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ඔබ අතින් අගුළු අරින තුරු උපකරණය අගුළු වැටි තිබේ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"දැනුම්දීම් ඉක්මනින් ලබාගන්න"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ඔබ අඟුළු හැරීමට කලින් ඒවා බලන්න"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"මිනිත්තු 15"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"මිනිත්තු 30"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"පැය 1"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"අස් කරන්න"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g>ක් මදක් නතර කරන ලදී"</string> <string name="battery_panel_title" msgid="7944156115535366613">"බැටරි භාවිතය"</string> diff --git a/packages/SystemUI/res/values-si/strings_car.xml b/packages/SystemUI/res/values-si/strings_car.xml index 723b4da7efd2..14ec53b15e08 100644 --- a/packages/SystemUI/res/values-si/strings_car.xml +++ b/packages/SystemUI/res/values-si/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"නොදනී"</string> + <string name="start_driving" msgid="864023351402918991">"රිය පැදවීම ආරම්භ කරන්න"</string> </resources> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index c32bf5f05b99..3c3f3d55a2d7 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -473,8 +473,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Váš pracovný profil spravuje organizácia <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je pripojený k aplikácii <xliff:g id="APPLICATION">%2$s</xliff:g>, ktorá môže sledovať vašu pracovnú aktivitu v sieti vrátane správ, aplikácií a webových stránok.\n\nĎalšie informácie vám poskytne správca."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Váš pracovný profil spravuje organizácia <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je pripojený k aplikácii <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ktorá môže sledovať vašu pracovnú aktivitu v sieti vrátane správ, aplikácií a webových stránok.\n\nPripojili ste sa k aplikácii <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ktorá môže sledovať vašu osobnú aktivitu v sieti."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odomknuté pre používateľa <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Agent <xliff:g id="TRUST_AGENT">%1$s</xliff:g> je spustený"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Zariadenie zostane uzamknuté, dokým ho ručne neodomknete."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Získavať upozornenia rýchlejšie"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Zobraziť pred odomknutím"</string> @@ -585,6 +584,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minút"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minút"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 hod."</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"SPÄŤ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Stlmené na <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Využitie batérie"</string> diff --git a/packages/SystemUI/res/values-sk/strings_car.xml b/packages/SystemUI/res/values-sk/strings_car.xml index 3559bb025b4d..6512065c2a71 100644 --- a/packages/SystemUI/res/values-sk/strings_car.xml +++ b/packages/SystemUI/res/values-sk/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Neznáme"</string> + <string name="start_driving" msgid="864023351402918991">"Začať šoférovať"</string> </resources> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index d2a6974bd9da..17a06e9acc0c 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -473,8 +473,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Delovni profil upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan z aplikacijo <xliff:g id="APPLICATION">%2$s</xliff:g>, ki lahko nadzira vašo delovno omrežno dejavnost, vključno z e-pošto, aplikacijami in spletnimi mesti.\n\nZa več informacij se obrnite na skrbnika."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Delovni profil upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan z aplikacijo <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ki lahko nadzira vašo delovno omrežno dejavnost, vključno z e-pošto, aplikacijami in spletnimi mesti.\n\nPovezani ste tudi z aplikacijo <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ki lahko nadzira vašo osebno omrežno dejavnost."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odklenjeno za uporabnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> se izvaja"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Naprava bo ostala zaklenjena, dokler je ročno ne odklenete."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Hitrejše prejemanje obvestil"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Oglejte si jih pred odklepanjem"</string> @@ -585,6 +584,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minut"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minut"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ura"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"RAZVELJAVI"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Preloženo za <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Poraba akumulatorja"</string> diff --git a/packages/SystemUI/res/values-sl/strings_car.xml b/packages/SystemUI/res/values-sl/strings_car.xml index cdc0ba5d5618..8e057309d475 100644 --- a/packages/SystemUI/res/values-sl/strings_car.xml +++ b/packages/SystemUI/res/values-sl/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Neznano"</string> + <string name="start_driving" msgid="864023351402918991">"Začnite voziti"</string> </resources> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 1f990aa4967a..92f7be87bf12 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profili yt i punës menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profili është i lidhur me <xliff:g id="APPLICATION">%2$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd të punës në rrjet, duke përfshirë mail-et, aplikacionet dhe sajtet e uebit.\n\nPër më shumë informacione, kontakto me administratorin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profili yt i punës menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profili është i lidhur me <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd të punës në rrjet, duke përfshirë mail-et, aplikacionet dhe sajtet e uebit.\n\nJe lidhur gjithashtu edhe me <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd personal në rrjet."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Shkyçur për <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> po ekzekutohet"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Pajisje do të qëndrojë e kyçur derisa ta shkyçësh manualisht"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Merr njoftime më shpejt"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Shikoji para se t\'i shkyçësh"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuta"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuta"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 orë"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ZHBËJ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"U shty për <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Përdorimi i baterisë"</string> diff --git a/packages/SystemUI/res/values-sq/strings_car.xml b/packages/SystemUI/res/values-sq/strings_car.xml index b318aff1ac8e..b3a52b8e2998 100644 --- a/packages/SystemUI/res/values-sq/strings_car.xml +++ b/packages/SystemUI/res/values-sq/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"E panjohur"</string> + <string name="start_driving" msgid="864023351402918991">"Fillo të drejtosh makinën"</string> </resources> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 849f77c4101e..c10408f3e090 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Профилом за Work управља <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Повезан је са апликацијом <xliff:g id="APPLICATION">%2$s</xliff:g>, која може да надгледа активности на пословној мрежи, укључујући имејлове, апликације и веб-сајтове.\n\nВише информација потражите од администратора."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Профилом за Work управља <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Повезан је са апликацијом <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, која може да надгледа активности на пословној мрежи, укључујући имејлове, апликације и веб-сајтове.\n\nПовезани сте и са апликацијом <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, која може да надгледа активности на личној мрежи."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Откључано за корисника <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Функција <xliff:g id="TRUST_AGENT">%1$s</xliff:g> је покренута"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Уређај ће остати закључан док га не откључате ручно"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Брже добијајте обавештења"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Прегледајте их пре откључавања"</string> @@ -579,6 +578,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 минута"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 минута"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 сат"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ОПОЗОВИ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Одложено је за <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Потрошња батерије"</string> diff --git a/packages/SystemUI/res/values-sr/strings_car.xml b/packages/SystemUI/res/values-sr/strings_car.xml index 8889bd3929e7..88e271433250 100644 --- a/packages/SystemUI/res/values-sr/strings_car.xml +++ b/packages/SystemUI/res/values-sr/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Непознато"</string> + <string name="start_driving" msgid="864023351402918991">"Почните да возите"</string> </resources> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 73fa7f358cca..4e373a82cd70 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jobbprofilen hanteras av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen är ansluten till <xliff:g id="APPLICATION">%2$s</xliff:g> som kan bevaka din nätverksaktivitet, exempelvis e-post, appar och webbplatser.\n\nKontakta administratören om du vill veta mer."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jobbprofilen hanteras av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen är ansluten till <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> som kan bevaka din nätverksaktivitet på jobbet, exempelvis e-post, appar och webbplatser.\n\nDu är även ansluten till <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> som kan bevaka din privata nätverksaktivitet."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Upplåst för <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> körs"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheten förblir låst tills du låser upp den manuellt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Få aviseringar snabbare"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Visa dem innan du låser upp"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuter"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuter"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 timme"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ÅNGRA"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Snoozad i <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Batteriförbrukning"</string> diff --git a/packages/SystemUI/res/values-sv/strings_car.xml b/packages/SystemUI/res/values-sv/strings_car.xml index f6d86e9cecfa..25b11366f3db 100644 --- a/packages/SystemUI/res/values-sv/strings_car.xml +++ b/packages/SystemUI/res/values-sv/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Okänt"</string> + <string name="start_driving" msgid="864023351402918991">"Börja köra"</string> </resources> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 3fb3ccd30657..9ba6522df0d0 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Wasifu wako wa kazini unasimamiwa na <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Wasifu umeunganishwa kwenye <xliff:g id="APPLICATION">%2$s</xliff:g>, ambayo inaweza kufuatilia shughuli za mtandao wako wa kazini, ikiwa ni pamoja na barua pepe, programu na tovuti.\n\n Wasiliana na msimamizi wako kwa maelezo zaidi."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Wasifu wako wa kazini unasimamiwa na <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Wasifu umeunganishwa kwenye <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ambayo inaweza kufuatilia shughuli zako kwenye mtandao wa kazini, ikiwa ni pamoja na barua pepe, programu na tovuti.\n\n Umeunganishwa pia kwenye <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ambayo inaweza kufuatilia shughuli zako kwenye mtandao wa binafsi."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Imefunguliwa kwa ajili ya <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> inatumika"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Kifaa kitaendelea kuwa katika hali ya kufungwa hadi utakapokifungua mwenyewe"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Pata arifa kwa haraka"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Zitazame kabla hujafungua"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"Dakika 15"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"Dakika 30"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"Saa 1"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"TENDUA"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Imeahirishwa kwa <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Matumizi ya betri"</string> diff --git a/packages/SystemUI/res/values-sw/strings_car.xml b/packages/SystemUI/res/values-sw/strings_car.xml index bd7ee80ae039..319f88228b70 100644 --- a/packages/SystemUI/res/values-sw/strings_car.xml +++ b/packages/SystemUI/res/values-sw/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Haijulikani"</string> + <string name="start_driving" msgid="864023351402918991">"Anza Kuendesha Gari"</string> </resources> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index fd8ca5b398f8..35168c848748 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"உங்கள் பணி விவரத்தை <xliff:g id="ORGANIZATION">%1$s</xliff:g> நிர்வகிக்கிறது. மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION">%2$s</xliff:g> உடன் அது இணைக்கப்பட்டுள்ளது.\n\nமேலும் தகவலுக்கு, நிர்வாகியைத் தொடர்புகொள்ளவும்."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"உங்கள் பணி விவரத்தை <xliff:g id="ORGANIZATION">%1$s</xliff:g> நிர்வகிக்கிறது. மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> உடன் அது இணைக்கப்பட்டுள்ளது.\n\nஉங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> உடனும் இணைக்கப்பட்டுள்ளீர்கள்."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>க்குத் திறக்கப்பட்டது"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> இயங்குகிறது"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"நீங்கள் கைமுறையாகத் திறக்கும் வரை, சாதனம் பூட்டப்பட்டிருக்கும்"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"விரைவாக அறிவிப்புகளைப் பெறுதல்"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"திறக்கும் முன் அவற்றைப் பார்க்கவும்"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 நிமிடங்கள்"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 நிமிடங்கள்"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 மணிநேரம்"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"செயல்தவிர்"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"உறக்கநிலையில் வைத்திருந்த நேரம்: <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"பேட்டரி உபயோகம்"</string> diff --git a/packages/SystemUI/res/values-ta/strings_car.xml b/packages/SystemUI/res/values-ta/strings_car.xml index 55a136ad92cb..9a53db067b7f 100644 --- a/packages/SystemUI/res/values-ta/strings_car.xml +++ b/packages/SystemUI/res/values-ta/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"தெரியாதது"</string> + <string name="start_driving" msgid="864023351402918991">"வாகனம் ஓட்டத் தொடங்கு"</string> </resources> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 9328aa83b5cd..6293fc5b720b 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"మీ కార్యాలయ ప్రొఫైల్ <xliff:g id="ORGANIZATION">%1$s</xliff:g> నిర్వహణలో ఉంది. ఇమెయిల్లు, అనువర్తనాలు మరియు వెబ్సైట్లతో సహా మీ కార్యాలయ నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగల <xliff:g id="APPLICATION">%2$s</xliff:g>కి ప్రొఫైల్ కనెక్ట్ చేయబడింది.\n\nమరింత సమాచారం కోసం, మీ నిర్వాహకులను సంప్రదించండి."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"మీ కార్యాలయ ప్రొఫైల్ <xliff:g id="ORGANIZATION">%1$s</xliff:g> నిర్వహణలో ఉంది. ఇమెయిల్లు, అనువర్తనాలు మరియు వెబ్సైట్లతో సహా మీ కార్యాలయ నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగల <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>కి ప్రొఫైల్ కనెక్ట్ చేయబడింది.\n\nమీ వ్యక్తిగత నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగల <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>కి కూడా మీరు కనెక్ట్ చేయబడ్డారు."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> కోసం అన్లాక్ చేయబడింది"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> అమలులో ఉంది"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"మీరు మాన్యువల్గా అన్లాక్ చేస్తే మినహా పరికరం లాక్ చేయబడి ఉంటుంది"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"నోటిఫికేషన్లను వేగంగా పొందండి"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"వీటిని మీరు అన్లాక్ చేయకముందే చూడండి"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 నిమిషాలు"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 నిమిషాలు"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 గంట"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"చర్య రద్దు చేయి"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> వరకు తాత్కాలికంగా ఆపివేయబడింది"</string> <string name="battery_panel_title" msgid="7944156115535366613">"బ్యాటరీ వినియోగం"</string> diff --git a/packages/SystemUI/res/values-te/strings_car.xml b/packages/SystemUI/res/values-te/strings_car.xml index 7999b1c090e2..183142218a17 100644 --- a/packages/SystemUI/res/values-te/strings_car.xml +++ b/packages/SystemUI/res/values-te/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"తెలియని"</string> + <string name="start_driving" msgid="864023351402918991">"డ్రైవింగ్ను ప్రారంభించండి"</string> </resources> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index bd58db2490be..5fa88540a047 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -64,7 +64,7 @@ <string name="usb_debugging_message" msgid="2220143855912376496">"ลายนิ้วมือหลัก RSA ของคอมพิวเตอร์คือ:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string> <string name="usb_debugging_always" msgid="303335496705863070">"อนุญาตจากคอมพิวเตอร์เครื่องนี้เสมอ"</string> <string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"ไม่อนุญาตให้แก้ไขข้อบกพร่องผ่าน USB"</string> - <string name="usb_debugging_secondary_user_message" msgid="8572228137833020196">"ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์นี้อยู่ในขณะนี้ไม่สามารถเปิดการแก้ปัญหาผ่าน USB ได้ หากต้องการใช้คุณลักษณะนี้ โปรดเปลี่ยนไปเป็นผู้ใช้ที่เป็นผู้ดูแลระบบ"</string> + <string name="usb_debugging_secondary_user_message" msgid="8572228137833020196">"ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์นี้อยู่ในขณะนี้ไม่สามารถเปิดการแก้ปัญหาผ่าน USB ได้ หากต้องการใช้ฟีเจอร์นี้ โปรดเปลี่ยนไปเป็นผู้ใช้ที่เป็นผู้ดูแลระบบ"</string> <string name="compat_mode_on" msgid="6623839244840638213">"ขยายจนเต็มหน้าจอ"</string> <string name="compat_mode_off" msgid="4434467572461327898">"ยืดจนเต็มหน้าจอ"</string> <string name="screenshot_saving_ticker" msgid="7403652894056693515">"กำลังบันทึกภาพหน้าจอ..."</string> @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> เป็นผู้จัดการโปรไฟล์งานของคุณ โปรไฟล์ดังกล่าวเชื่อมต่ออยู่กับ <xliff:g id="APPLICATION">%2$s</xliff:g> ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายของคุณ รวมถึงอีเมล แอป และเว็บไซต์\n\nโปรดติดต่อผู้ดูแลระบบของคุณสำหรับข้อมูลเพิ่มเติม"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> เป็นผู้จัดการโปรไฟล์งานของคุณ โปรไฟล์ดังกล่าวเชื่อมต่ออยู่กับ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายของคุณ รวมถึงอีเมล แอป และเว็บไซต์\n\nคุณยังเชื่อมต่ออยู่กับ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ด้วย ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายส่วนตัวของคุณ"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"ปลดล็อกสำหรับ <xliff:g id="USER_NAME">%1$s</xliff:g> แล้ว"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> กำลังทำงาน"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"อุปกรณ์จะล็อกจนกว่าคุณจะปลดล็อกด้วยตนเอง"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"รับการแจ้งเตือนเร็วขึ้น"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ดูก่อนปลดล็อก"</string> @@ -526,12 +525,12 @@ <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"ฮอตสปอต"</string> <string name="accessibility_managed_profile" msgid="6613641363112584120">"โปรไฟล์งาน"</string> <string name="tuner_warning_title" msgid="7094689930793031682">"เพลิดเพลินกับบางส่วนแต่ไม่ใช่ทั้งหมด"</string> - <string name="tuner_warning" msgid="8730648121973575701">"ตัวรับสัญญาณ UI ระบบช่วยให้คุณมีวิธีพิเศษในการปรับแต่งและกำหนดค่าส่วนติดต่อผู้ใช้ Android คุณลักษณะรุ่นทดลองเหล่านี้อาจมีการเปลี่ยนแปลง ขัดข้อง หรือหายไปในเวอร์ชันอนาคต โปรดดำเนินการด้วยความระมัดระวัง"</string> - <string name="tuner_persistent_warning" msgid="8597333795565621795">"คุณลักษณะรุ่นทดลองเหล่านี้อาจมีการเปลี่ยนแปลง ขัดข้อง หรือหายไปในเวอร์ชันอนาคต โปรดดำเนินการด้วยความระมัดระวัง"</string> + <string name="tuner_warning" msgid="8730648121973575701">"ตัวรับสัญญาณ UI ระบบช่วยให้คุณมีวิธีพิเศษในการปรับแต่งและกำหนดค่าส่วนติดต่อผู้ใช้ Android ฟีเจอร์รุ่นทดลองเหล่านี้อาจมีการเปลี่ยนแปลง ขัดข้อง หรือหายไปในเวอร์ชันอนาคต โปรดดำเนินการด้วยความระมัดระวัง"</string> + <string name="tuner_persistent_warning" msgid="8597333795565621795">"ฟีเจอร์รุ่นทดลองเหล่านี้อาจมีการเปลี่ยนแปลง ขัดข้อง หรือหายไปในเวอร์ชันอนาคต โปรดดำเนินการด้วยความระมัดระวัง"</string> <string name="got_it" msgid="2239653834387972602">"รับทราบ"</string> <string name="tuner_toast" msgid="603429811084428439">"ยินดีด้วย! เพิ่มตัวรับสัญญาณ UI ระบบไปยังการตั้งค่าแล้ว"</string> <string name="remove_from_settings" msgid="8389591916603406378">"นำออกจากการตั้งค่า"</string> - <string name="remove_from_settings_prompt" msgid="6069085993355887748">"นำตัวรับสัญญาณ UI ระบบออกจากการตั้งค่าและหยุดใช้คุณลักษณะทั้งหมดของตัวรับสัญญาณใช่ไหม"</string> + <string name="remove_from_settings_prompt" msgid="6069085993355887748">"นำตัวรับสัญญาณ UI ระบบออกจากการตั้งค่าและหยุดใช้ฟีเจอร์ทั้งหมดของตัวรับสัญญาณใช่ไหม"</string> <string name="activity_not_found" msgid="348423244327799974">"ยังไม่ได้ติดตั้งแอปพลิเคชันบนอุปกรณ์ของคุณ"</string> <string name="clock_seconds" msgid="7689554147579179507">"แสดงวินาทีของนาฬิกา"</string> <string name="clock_seconds_desc" msgid="6282693067130470675">"แสดงวินาทีของนาฬิกาในแถบสถานะ อาจส่งผลต่ออายุแบตเตอรี"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 นาที"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 นาที"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ชั่วโมง"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"เลิกทำ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"ปิดเสียงเตือนชั่วคราวไว้เป็นเวลา <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"การใช้งานแบตเตอรี่"</string> @@ -721,7 +722,7 @@ <string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"ลากลงเพื่อปิด"</string> <string name="pip_menu_title" msgid="3328510504196964712">"เมนูการแสดงผลหลายแหล่งพร้อมกัน"</string> <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ใช้การแสดงผลหลายแหล่งพร้อมกัน"</string> - <string name="pip_notification_message" msgid="4171698133469539591">"หากคุณไม่ต้องการให้ <xliff:g id="NAME">%s</xliff:g> ใช้คุณลักษณะนี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดคุณลักษณะ"</string> + <string name="pip_notification_message" msgid="4171698133469539591">"หากคุณไม่ต้องการให้ <xliff:g id="NAME">%s</xliff:g> ใช้ฟีเจอร์นี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดฟีเจอร์"</string> <string name="pip_play" msgid="1417176722760265888">"เล่น"</string> <string name="pip_pause" msgid="8881063404466476571">"หยุดชั่วคราว"</string> <string name="pip_skip_to_next" msgid="1948440006726306284">"ข้ามไปรายการถัดไป"</string> @@ -730,7 +731,7 @@ <string name="thermal_shutdown_message" msgid="9006456746902370523">"ขณะนี้โทรศัพท์ทำงานเป็นปกติ"</string> <string name="thermal_shutdown_dialog_message" msgid="566347880005304139">"โทรศัพท์ร้อนเกินไปจึงปิดเครื่องเพื่อให้เย็นลง ขณะนี้โทรศัพท์ทำงานเป็นปกติ\n\nโทรศัพท์อาจร้อนเกินไปหากคุณ\n • ใช้แอปที่ใช้ทรัพยากรมาก (เช่น เกม วิดีโอ หรือแอปการนำทาง)\n • ดาวน์โหลดหรืออัปโหลดไฟล์ขนาดใหญ่\n • ใช้โทรศัพท์ในอุณหภูมิที่สูง"</string> <string name="high_temp_title" msgid="4589508026407318374">"โทรศัพท์เริ่มเครื่องร้อน"</string> - <string name="high_temp_notif_message" msgid="5642466103153429279">"คุณลักษณะบางอย่างจะใช้งานได้จำกัดขณะโทรศัพท์ลดอุณหภูมิลง"</string> + <string name="high_temp_notif_message" msgid="5642466103153429279">"ฟีเจอร์บางอย่างจะใช้งานได้จำกัดขณะโทรศัพท์ลดอุณหภูมิลง"</string> <string name="high_temp_dialog_message" msgid="6840700639374113553">"โทรศัพท์จะพยายามลดอุณหภูมิลงโดยอัตโนมัติ คุณยังสามารถใช้โทรศัพท์ได้ แต่โทรศัพท์อาจทำงานช้าลง\n\nโทรศัพท์จะทำงานตามปกติเมื่อเย็นลงแล้ว"</string> <string name="lockscreen_shortcut_left" msgid="2182769107618938629">"ทางลัดทางซ้าย"</string> <string name="lockscreen_shortcut_right" msgid="3328683699505226536">"ทางลัดทางขวา"</string> diff --git a/packages/SystemUI/res/values-th/strings_car.xml b/packages/SystemUI/res/values-th/strings_car.xml index e5f8bf0b0881..d6cd22594f49 100644 --- a/packages/SystemUI/res/values-th/strings_car.xml +++ b/packages/SystemUI/res/values-th/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"ไม่ทราบ"</string> + <string name="start_driving" msgid="864023351402918991">"เริ่มขับรถ"</string> </resources> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 1cae912d2a1a..a54b1b919a42 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Pinamamahalaan ng <xliff:g id="ORGANIZATION">%1$s</xliff:g> ang iyong profile sa trabaho. Nakakonekta ang profile sa <xliff:g id="APPLICATION">%2$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong network sa trabaho, kasama ang mga email, app, at website.\n\nPara sa higit pang impormasyon, makipag-ugnayan sa iyong admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Pinamamahalaan ng <xliff:g id="ORGANIZATION">%1$s</xliff:g> ang iyong profile sa trabaho. Nakakonekta ang profile sa <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong network sa trabaho, kasama ang mga email, app, at website.\n\nNakakonekta ka rin sa <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong personal na network."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Na-unlock para kay <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Gumagana ang <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Mananatiling naka-lock ang device hanggang sa manu-mano mong i-unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Kunin ang notification nang mas mabilis"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Tingnan ang mga ito bago ka mag-unlock"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 minuto"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 minuto"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 oras"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"I-UNDO"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Na-snooze ng <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Paggamit ng baterya"</string> diff --git a/packages/SystemUI/res/values-tl/strings_car.xml b/packages/SystemUI/res/values-tl/strings_car.xml index 082fdb22f976..16442b85e426 100644 --- a/packages/SystemUI/res/values-tl/strings_car.xml +++ b/packages/SystemUI/res/values-tl/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Hindi Alam"</string> + <string name="start_driving" msgid="864023351402918991">"Simulan ang Pagmamaneho"</string> </resources> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 90192bb85f2a..caaf403814c3 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"İş profiliniz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tarafından yönetiliyor. Profil; e-postalar, uygulamalar ve web siteleri de dahil olmak üzere iş ağı etkinliğinizi izleyebilen <xliff:g id="APPLICATION">%2$s</xliff:g> uygulamasına bağlı.\n\nDaha fazla bilgi için yöneticinize başvurun."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"İş profiliniz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tarafından yönetiliyor. Profil; e-postalar, uygulamalar ve web siteleri de dahil olmak üzere iş ağı etkinliğinizi izleyebilen <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> uygulamasına bağlı.\n\nAyrıca, kişisel ağ etkinliğinizi izleyebilen <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> uygulamasına bağlısınız."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> için kilit açıldı"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> çalışıyor"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Cihazınızın kilidini manuel olarak açmadıkça cihaz kilitli kalacak"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Bildirimleri daha hızlı alın"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Kilidi açmadan bildirimleri görün"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 dakika"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 dakika"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 saat"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"GERİ AL"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> süreyle ertelendi"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Pil kullanımı"</string> diff --git a/packages/SystemUI/res/values-tr/strings_car.xml b/packages/SystemUI/res/values-tr/strings_car.xml index c749bed792c1..126789f1dcdd 100644 --- a/packages/SystemUI/res/values-tr/strings_car.xml +++ b/packages/SystemUI/res/values-tr/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Bilinmiyor"</string> + <string name="start_driving" msgid="864023351402918991">"Sürmeye Başla"</string> </resources> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 14a056430950..58f38553f749 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -473,8 +473,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Вашим робочим профілем керує адміністратор організації <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Цей профіль під’єднано до додатка <xliff:g id="APPLICATION">%2$s</xliff:g>, який може відстежувати вашу активність у мережі, зокрема в електронній пошті, додатках і на веб-сайтах.\n\nЩоб дізнатися більше, зв’яжіться з адміністратором."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Вашим робочим профілем керує адміністратор організації <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Цей профіль під’єднано до додатка <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, який може відстежувати вашу активність у мережі, зокрема а електронній пошті, додатках і на веб-сайтах.\n\nВаш профіль також під’єднано до додатка <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, який може відстежувати вашу особисту активність у мережі."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Розблоковано для користувача <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> працює"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Пристрій залишатиметься заблокованим, доки ви не розблокуєте його вручну"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Швидше отримуйте сповіщення"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Переглядайте сповіщення, перш ніж розблокувати екран"</string> @@ -585,6 +584,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 хвилин"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 хвилин"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 годину"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"ВІДМІНИТИ"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Відкладено на <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Використання заряду"</string> diff --git a/packages/SystemUI/res/values-uk/strings_car.xml b/packages/SystemUI/res/values-uk/strings_car.xml index 0f8844975849..852e1c6195fa 100644 --- a/packages/SystemUI/res/values-uk/strings_car.xml +++ b/packages/SystemUI/res/values-uk/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Невідомо"</string> + <string name="start_driving" msgid="864023351402918991">"Почати рух"</string> </resources> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 13161e94f0a1..4d18eec415e2 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"آپ کا دفتری پروفائل <xliff:g id="ORGANIZATION">%1$s</xliff:g> کے زیر انتظام ہے۔ پروفائل <xliff:g id="APPLICATION">%2$s</xliff:g> سے منسلک ہے جو ای میلز، ایپس اور ویب سائٹس سمیت آپ کے دفتری نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔\n\nمزید معلومات کیلئے اپنے منتظم سے رابطہ کریں۔"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"آپ کا دفتری پروفائل <xliff:g id="ORGANIZATION">%1$s</xliff:g> کے زیر انتظام ہے۔ پروفائل <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> سے منسلک ہے جو ای میلز، ایپس اور ویب سائٹس سمیت آپ کے دفتری نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔\n\nآپ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> سے بھی منسلک ہیں، جو آپ کے ذاتی نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> کے لیے غیر مقفل کر دیا گیا"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> چل رہا ہے"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"آلہ اس وقت تک مقفل رہے گا جب تک آپ دستی طور پر اسے غیر مقفل نہ کریں"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"تیزی سے اطلاعات حاصل کریں"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"غیر مقفل کرنے سے پہلے انہیں دیکھیں"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 منٹ"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 منٹ"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 گھنٹہ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"کالعدم کریں"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> کیلئے اسنوز کیا گیا"</string> <string name="battery_panel_title" msgid="7944156115535366613">"بیٹری کا استعمال"</string> diff --git a/packages/SystemUI/res/values-ur/strings_car.xml b/packages/SystemUI/res/values-ur/strings_car.xml index 4f819a0d9c96..653a59be1d9c 100644 --- a/packages/SystemUI/res/values-ur/strings_car.xml +++ b/packages/SystemUI/res/values-ur/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"نامعلوم"</string> + <string name="start_driving" msgid="864023351402918991">"ڈرائیونگ شروع کریں"</string> </resources> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 352e8858df61..2b7f1a3efc7c 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -201,7 +201,7 @@ <string name="accessibility_quick_settings_airplane_changed_off" msgid="66846307818850664">"Parvoz rejimi o‘chirildi."</string> <string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Parvoz rejimi yoqildi."</string> <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"“Bezovta qilinmasin” funksiyasi yoqilgan, faqat muhim bildirishnomalar ko‘rsatiladi."</string> - <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Bezovta qilinmasin, tinchlik saqlansin"</string> + <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Bezovta qilinmasin, jimjitlik."</string> <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Bezovta qilinmasin, faqat signallar"</string> <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Bezovta qilinmasin."</string> <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"“Bezovta qilinmasin” funksiyasi o‘chirilgan."</string> @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ishchi profilingiz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tomonidan boshqariladi. <xliff:g id="APPLICATION">%2$s</xliff:g> ilovasi ish tarmog‘idagi, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin.\n\nBatafsil axborot olish uchun administrator bilan bog‘laning."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ishchi profilingiz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tomonidan boshqariladi. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ilovasi ish tarmog‘idagi, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin.\n\nShuningdek, <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ilovasi ham shaxsiy tarmoqdagi harakatlaringizni kuzatishi mumkin."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> uchun qulfdan chiqarilgan"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ishlamoqda"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Qurilma qo‘lda qulfdan chiqarilmaguncha qulflangan holatda qoladi"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Bildirishnomalarni tezroq oling"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ularni qulfdan chiqarishdan oldin ko‘ring"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 daqiqa"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 daqiqa"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 soat"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"BEKOR QILISH"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> muddatga kechiktirildi"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Batareya sarfi"</string> diff --git a/packages/SystemUI/res/values-uz/strings_car.xml b/packages/SystemUI/res/values-uz/strings_car.xml index a28ba3c7a632..29951be743c3 100644 --- a/packages/SystemUI/res/values-uz/strings_car.xml +++ b/packages/SystemUI/res/values-uz/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Noma’lum"</string> + <string name="start_driving" msgid="864023351402918991">"Navigatsiyani boshlash"</string> </resources> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 96b2d8d6db3c..ebb869ce2b04 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Hồ sơ công việc của bạn do <xliff:g id="ORGANIZATION">%1$s</xliff:g> quản lý. Hồ sơ này được kết nối với <xliff:g id="APPLICATION">%2$s</xliff:g>, ứng dụng này có thể giám sát hoạt động mạng cơ quan của bạn, bao gồm email, ứng dụng và trang web.\n\nĐể biết thêm thông tin, hãy liên hệ với quản trị viên của bạn."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Hồ sơ công việc của bạn do <xliff:g id="ORGANIZATION">%1$s</xliff:g> quản lý. Hồ sơ này được kết nối với <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ứng dụng này có thể giám sát hoạt động mạng của bạn, bao gồm email, ứng dụng và trang web.\n\nBạn cũng đang kết nối với <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ứng dụng này có thể giám sát hoạt động mạng cá nhân của bạn."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Được mở khóa cho <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> đang chạy"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Thiết bị sẽ vẫn bị khóa cho tới khi bạn mở khóa theo cách thủ công"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Nhận thông báo nhanh hơn"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Xem thông báo trước khi bạn mở khóa"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 phút"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 phút"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 giờ"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"HOÀN TÁC"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Báo lại sau <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Mức sử dụng pin"</string> diff --git a/packages/SystemUI/res/values-vi/strings_car.xml b/packages/SystemUI/res/values-vi/strings_car.xml index ca176064cffe..fb47969c2b49 100644 --- a/packages/SystemUI/res/values-vi/strings_car.xml +++ b/packages/SystemUI/res/values-vi/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Không xác định"</string> + <string name="start_driving" msgid="864023351402918991">"Bắt đầu lái xe"</string> </resources> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 45d1678792b2..814bcffd29e7 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"您的工作资料由“<xliff:g id="ORGANIZATION">%1$s</xliff:g>”负责管理,且已连接到“<xliff:g id="APPLICATION">%2$s</xliff:g>”(该应用能够监控您的工作网络活动,其中包括收发电子邮件、使用应用和浏览网站)。\n\n如需更多信息,请与您的管理员联系。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"您的工作资料由“<xliff:g id="ORGANIZATION">%1$s</xliff:g>”负责管理,且已连接到“<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>”(该应用能够监控您的工作网络活动,其中包括收发电子邮件、使用应用和浏览网站)。\n\n此外,您还连接到了“<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>”(该应用能够监控您的个人网络活动)。"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"已为<xliff:g id="USER_NAME">%1$s</xliff:g>解锁"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"“<xliff:g id="TRUST_AGENT">%1$s</xliff:g>”正在运行"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"在您手动解锁之前,设备会保持锁定状态"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"更快捷地查看通知"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"无需解锁即可查看通知"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 分钟"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 分钟"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 小时"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"撤消"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"已延后 <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"电池使用情况"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings_car.xml b/packages/SystemUI/res/values-zh-rCN/strings_car.xml index 4797c7b4b6f4..27dd755c9f4a 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings_car.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"未知"</string> + <string name="start_driving" msgid="864023351402918991">"开始驾驶"</string> </resources> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 52fd59b1cab2..2c9d321e7cd5 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -469,8 +469,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"您的工作設定檔由<xliff:g id="ORGANIZATION">%1$s</xliff:g>管理。設定檔已連結至「<xliff:g id="APPLICATION">%2$s</xliff:g>」,此應用程式可以監控您的工作網絡活動,包括電郵、應用程式和網站。\n\n如需瞭解詳情,請聯絡您的管理員。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"您的工作設定檔由<xliff:g id="ORGANIZATION">%1$s</xliff:g>管理。設定檔已連結至「<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>」,此應用程式可以監控您的工作網絡活動,包括電郵、應用程式和網站。\n\n您亦已連結至「<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>」,此應用程式可以監控您的個人網絡活動。"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"已為<xliff:g id="USER_NAME">%1$s</xliff:g>解鎖"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> 執行中"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"裝置將保持上鎖,直到您手動解鎖"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"更快取得通知"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"解鎖前顯示"</string> @@ -577,6 +576,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 分鐘"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 分鐘"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 小時"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"復原"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"已延後 <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"電池用量"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings_car.xml b/packages/SystemUI/res/values-zh-rHK/strings_car.xml index c40e4309dd96..01f3b141756a 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings_car.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"不明"</string> + <string name="start_driving" msgid="864023351402918991">"開始駕駛"</string> </resources> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 972a6d68a114..938947f61886 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -268,7 +268,7 @@ <string name="ethernet_label" msgid="7967563676324087464">"乙太網路"</string> <string name="quick_settings_dnd_label" msgid="8735855737575028208">"零打擾"</string> <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"僅限優先通知"</string> - <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"僅允許鬧鐘"</string> + <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"僅限鬧鐘"</string> <string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"完全靜音"</string> <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"藍牙"</string> <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"藍牙 (<xliff:g id="NUMBER">%d</xliff:g> 個裝置)"</string> @@ -368,7 +368,7 @@ <string name="interruption_level_none_with_warning" msgid="5114872171614161084">"完全靜音。這也會關閉螢幕閱讀器的音訊。"</string> <string name="interruption_level_none" msgid="6000083681244492992">"完全靜音"</string> <string name="interruption_level_priority" msgid="6426766465363855505">"僅限優先通知"</string> - <string name="interruption_level_alarms" msgid="5226306993448328896">"僅允許鬧鐘"</string> + <string name="interruption_level_alarms" msgid="5226306993448328896">"僅限鬧鐘"</string> <string name="interruption_level_none_twoline" msgid="3957581548190765889">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"僅允許\n優先通知"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"僅允許\n鬧鐘"</string> @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"你的 Work 設定檔是由「<xliff:g id="ORGANIZATION">%1$s</xliff:g>」所管理。由於該設定檔已連結至「<xliff:g id="APPLICATION">%2$s</xliff:g>」,因此你的網路活動 (包括收發電子郵件、使用應用程式和瀏覽網站) 可能會受到這個應用程式監控。\n\n如要瞭解詳情,請與你的管理員聯絡。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"你的 Work 設定檔是由「<xliff:g id="ORGANIZATION">%1$s</xliff:g>」所管理。由於該設定檔已連結至「<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>」,因此你的網路活動 (包括收發電子郵件、使用應用程式和瀏覽網站) 可能會受到這個應用程式監控。\n\n此外,你還與「<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>」建立了連結,因此你的個人網路活動也可能會受到該應用程式監控。"</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"已為<xliff:g id="USER_NAME">%1$s</xliff:g>解鎖"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"「<xliff:g id="TRUST_AGENT">%1$s</xliff:g>」執行中"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"在你手動解鎖前,裝置將保持鎖定狀態"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"更快取得通知"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"解鎖前顯示"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 分鐘"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 分鐘"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 小時"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"復原"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"已延後 <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"電池用量"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings_car.xml b/packages/SystemUI/res/values-zh-rTW/strings_car.xml index c40e4309dd96..01f3b141756a 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings_car.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"不明"</string> + <string name="start_driving" msgid="864023351402918991">"開始駕駛"</string> </resources> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index c05a5d4c80c0..38783e5e8147 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -467,8 +467,7 @@ <string name="monitoring_description_app_work" msgid="4612997849787922906">"Iphrofayela yakho yomsebenzi iphethwe i-<xliff:g id="ORGANIZATION">%1$s</xliff:g>. Iphrofayela ixhumeke ku-<xliff:g id="APPLICATION">%2$s</xliff:g>, engaqapha umsebenzi wenethiwekhi yakho yokusebenza, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi.\n\nUkuze uthole olunye ulwazi, xhumana nomlawuli wakho."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Iphrofayela yakho yomsebenzi iphethwe i-<xliff:g id="ORGANIZATION">%1$s</xliff:g>. Iphrofayela ixhumeke ku-<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, engaqapha umsebenzi wakho wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi.\n\nFuthi uxhumeke ku-<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, engaqapha umsebenzi wakho siqu wenethiwekhi."</string> <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Kuvulelwe u-<xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for keyguard_indication_trust_managed (8319646760022357585) --> - <skip /> + <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> iyasebenza"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Idivayisi izohlala ikhiyekile uze uyivule ngokwenza"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Thola izaziso ngokushesha"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ibone ngaphambi kokuthi uyivule"</string> @@ -575,6 +574,8 @@ <string name="snooze_option_15_min" msgid="1068727451405610715">"15 amaminithi"</string> <string name="snooze_option_30_min" msgid="867081342535195788">"30 amaminithi"</string> <string name="snooze_option_1_hour" msgid="1098086401880077154">"1 ihora"</string> + <!-- no translation found for snooze_option_2_hour (8332218255658969475) --> + <skip /> <string name="snooze_undo" msgid="6074877317002985129">"HLEHLISA"</string> <string name="snoozed_for_time" msgid="2390718332980204462">"Kusnuzwe u-<xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string> <string name="battery_panel_title" msgid="7944156115535366613">"Ukusetshenziswa kwebhethri"</string> diff --git a/packages/SystemUI/res/values-zu/strings_car.xml b/packages/SystemUI/res/values-zu/strings_car.xml index d4be153b2371..3eddfd463d7f 100644 --- a/packages/SystemUI/res/values-zu/strings_car.xml +++ b/packages/SystemUI/res/values-zu/strings_car.xml @@ -20,4 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="unknown_user_label" msgid="4323896111737677955">"Akwaziwa"</string> + <string name="start_driving" msgid="864023351402918991">"Qala ukushayela"</string> </resources> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 2abd37fdb3c8..f3ce40fb1816 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -1505,20 +1505,27 @@ <!-- Notification: Menu row: Content description for the snooze icon. [CHAR LIMIT=NONE] --> <string name="notification_menu_snooze_description">notification snooze options</string> - <!-- Notification: Menu row: Snooze options: 15 minute option. [CHAR LIMIT=50]--> - <string name="snooze_option_15_min">15 minutes</string> - <!-- Notification: Menu row: Snooze options: 30 minute option. [CHAR LIMIT=50]--> - <string name="snooze_option_30_min">30 minutes</string> - <!-- Notification: Menu row: Snooze options: 1 hour option. [CHAR LIMIT=50]--> - <string name="snooze_option_1_hour">1 hour</string> - <!-- Notification: Menu row: Snooze options: 1 hour option. [CHAR LIMIT=50]--> - <string name="snooze_option_2_hour">2 hours</string> - <!-- Notification: Menu row: Snooze undo button label. [CHAR LIMIT=50]--> + <!-- Notification: Snooze panel: Snooze undo button label. [CHAR LIMIT=50]--> <string name="snooze_undo">UNDO</string> - <!-- Notification: Menu row: Snooze: message indicating how long the notification was snoozed for. [CHAR LIMIT=100]--> + <!-- Notification: Snooze panel: message indicating how long the notification was snoozed for. [CHAR LIMIT=100]--> <string name="snoozed_for_time">Snoozed for <xliff:g id="time_amount" example="15 minutes">%1$s</xliff:g></string> + <!-- Notification:Snooze panel: Snooze options for hours --> + <plurals name="snoozeHourOptions"> + <item quantity="one">%d hour</item> + <item quantity="two">%d hours</item> + <item quantity="few">%d hours</item> + <item quantity="other">%d hours</item> + </plurals> + + <!-- Notification: Snooze panel: Snooze options for minutes --> + <plurals name="snoozeMinuteOptions"> + <item quantity="one">%d minute</item> + <item quantity="few">%d minutes</item> + <item quantity="other">%d minutes</item> + </plurals> + <!-- Title of the battery settings detail panel [CHAR LIMIT=20] --> <string name="battery_panel_title">Battery usage</string> diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java index f0ff22dc45c7..db1e8a9c112e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java @@ -147,8 +147,10 @@ public class KeyguardStatusView extends GridLayout { mClockView.setLayoutParams(layoutParams); mDateView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.widget_label_font_size)); - mOwnerInfo.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize(R.dimen.widget_label_font_size)); + if (mOwnerInfo != null) { + mOwnerInfo.setTextSize(TypedValue.COMPLEX_UNIT_PX, + getResources().getDimensionPixelSize(R.dimen.widget_label_font_size)); + } } public void refreshTime() { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index b346d40f7711..95a9132f2317 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -360,13 +360,20 @@ public class WifiTile extends QSTileImpl<SignalState> { private void updateItems() { if (mItems == null) return; - if (mSignalCallback.mInfo.enabled) { - mItems.setEmptyState(R.drawable.ic_qs_wifi_detail_empty, - R.string.quick_settings_wifi_detail_empty_text); - } else { + + // Wi-Fi is off + if (!mSignalCallback.mInfo.enabled) { mItems.setEmptyState(R.drawable.ic_qs_wifi_detail_empty, R.string.wifi_is_off); + mItems.setItems(null); + return; } + + // No available access points + mItems.setEmptyState(R.drawable.ic_qs_wifi_detail_empty, + R.string.quick_settings_wifi_detail_empty_text); + + // Build the list Item[] items = null; if (mAccessPoints != null) { items = new Item[mAccessPoints.length]; diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java index e2e9b1b7d76f..611169f575c1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java @@ -30,6 +30,7 @@ import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.Drawable; @@ -239,8 +240,6 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener } }); - protected Bitmap mThumbTransitionBitmapCache; - public RecentsImpl(Context context) { mContext = context; mHandler = new Handler(); @@ -775,14 +774,6 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener } mHeaderBar.layout(0, 0, taskViewWidth, mTaskBarHeight); } - - // Update the transition bitmap to match the new header bar height - if (mThumbTransitionBitmapCache == null || - (mThumbTransitionBitmapCache.getWidth() != taskViewWidth) || - (mThumbTransitionBitmapCache.getHeight() != mTaskBarHeight)) { - mThumbTransitionBitmapCache = Bitmap.createBitmap(taskViewWidth, - mTaskBarHeight, Bitmap.Config.ARGB_8888); - } } } @@ -864,8 +855,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener mTmpTransform = stackLayout.getStackTransformScreenCoordinates(task, stackScroller.getStackScroll(), mTmpTransform, null, windowOverrideRect); - Bitmap thumbnail = drawThumbnailTransitionBitmap(task, mTmpTransform, - mThumbTransitionBitmapCache); + GraphicBuffer thumbnail = drawThumbnailTransitionBitmap(task, mTmpTransform); Rect toTaskRect = new Rect(); mTmpTransform.rect.round(toTaskRect); specs.add(new AppTransitionAnimationSpec(task.key.id, thumbnail, toTaskRect)); @@ -887,8 +877,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener () -> { Rect rect = new Rect(); toTaskRect.round(rect); - Bitmap thumbnail = drawThumbnailTransitionBitmap(toTask, toTransform, - mThumbTransitionBitmapCache); + GraphicBuffer thumbnail = drawThumbnailTransitionBitmap(toTask, + toTransform); return Lists.newArrayList(new AppTransitionAnimationSpec( toTask.key.id, thumbnail, rect)); }); @@ -924,19 +914,19 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener /** * Draws the header of a task used for the window animation into a bitmap. */ - private Bitmap drawThumbnailTransitionBitmap(Task toTask, TaskViewTransform toTransform, - Bitmap thumbnail) { + private GraphicBuffer drawThumbnailTransitionBitmap(Task toTask, + TaskViewTransform toTransform) { SystemServicesProxy ssp = Recents.getSystemServices(); if (toTransform != null && toTask.key != null) { synchronized (mHeaderBarLock) { boolean disabledInSafeMode = !toTask.isSystemApp && ssp.isInSafeMode(); - mHeaderBar.onTaskViewSizeChanged((int) toTransform.rect.width(), - (int) toTransform.rect.height()); + int width = (int) toTransform.rect.width(); + int height = (int) toTransform.rect.height(); + mHeaderBar.onTaskViewSizeChanged(width, height); if (RecentsDebugFlags.Static.EnableTransitionThumbnailDebugMode) { - thumbnail.eraseColor(0xFFff0000); + return RecentsTransitionHelper.drawViewIntoGraphicBuffer(width, mTaskBarHeight, + null, 1f, 0xFFff0000); } else { - thumbnail.eraseColor(0); - Canvas c = new Canvas(thumbnail); // Workaround for b/27815919, reset the callback so that we do not trigger an // invalidate on the header bar as a result of updating the icon Drawable icon = mHeaderBar.getIconView().getDrawable(); @@ -947,11 +937,10 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener disabledInSafeMode); mHeaderBar.onTaskDataLoaded(); mHeaderBar.setDimAlpha(toTransform.dimAlpha); - mHeaderBar.draw(c); - c.setBitmap(null); + return RecentsTransitionHelper.drawViewIntoGraphicBuffer(width, mTaskBarHeight, + mHeaderBar, 1f, 0); } } - return thumbnail.createAshmemBitmap(); } return null; } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java index d7d264e3aa07..21dfe8caf964 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java @@ -30,6 +30,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; @@ -37,7 +38,11 @@ import android.os.IRemoteCallback; import android.os.RemoteException; import android.util.Log; import android.view.AppTransitionAnimationSpec; +import android.view.DisplayListCanvas; import android.view.IAppTransitionAnimationSpecsFuture; +import android.view.RenderNode; +import android.view.ThreadedRenderer; +import android.view.View; import com.android.internal.annotations.GuardedBy; import com.android.systemui.recents.Recents; @@ -264,8 +269,8 @@ public class RecentsTransitionHelper { Rect bounds) { mTmpTransform.fillIn(taskView); Task task = taskView.getTask(); - Bitmap thumbnail = RecentsTransitionHelper.composeTaskBitmap(taskView, mTmpTransform); - return Collections.singletonList(new AppTransitionAnimationSpec(task.key.id, thumbnail, + GraphicBuffer buffer = RecentsTransitionHelper.composeTaskBitmap(taskView, mTmpTransform); + return Collections.singletonList(new AppTransitionAnimationSpec(task.key.id, buffer, bounds)); } @@ -346,7 +351,7 @@ public class RecentsTransitionHelper { return new AppTransitionAnimationSpec(task.key.id, null, taskRect); } - public static Bitmap composeTaskBitmap(TaskView taskView, TaskViewTransform transform) { + public static GraphicBuffer composeTaskBitmap(TaskView taskView, TaskViewTransform transform) { float scale = transform.scale; int fromWidth = (int) (transform.rect.width() * scale); int fromHeight = (int) (transform.rect.height() * scale); @@ -354,26 +359,17 @@ public class RecentsTransitionHelper { Log.e(TAG, "Could not compose thumbnail for task: " + taskView.getTask() + " at transform: " + transform); - Bitmap b = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); - b.eraseColor(Color.TRANSPARENT); - return b; + return drawViewIntoGraphicBuffer(1, 1, null, 1f, 0x00ffffff); } else { - Bitmap b = Bitmap.createBitmap(fromWidth, fromHeight, - Bitmap.Config.ARGB_8888); - if (RecentsDebugFlags.Static.EnableTransitionThumbnailDebugMode) { - b.eraseColor(0xFFff0000); + return drawViewIntoGraphicBuffer(fromWidth, fromHeight, null, 1f, 0xFFff0000); } else { - Canvas c = new Canvas(b); - c.scale(scale, scale); - taskView.draw(c); - c.setBitmap(null); + return drawViewIntoGraphicBuffer(fromWidth, fromHeight, taskView, scale, 0); } - return b.createAshmemBitmap(); } } - private static Bitmap composeHeaderBitmap(TaskView taskView, + private static GraphicBuffer composeHeaderBitmap(TaskView taskView, TaskViewTransform transform) { float scale = transform.scale; int headerWidth = (int) (transform.rect.width()); @@ -382,16 +378,30 @@ public class RecentsTransitionHelper { return null; } - Bitmap b = Bitmap.createBitmap(headerWidth, headerHeight, Bitmap.Config.ARGB_8888); if (RecentsDebugFlags.Static.EnableTransitionThumbnailDebugMode) { - b.eraseColor(0xFFff0000); + return drawViewIntoGraphicBuffer(headerWidth, headerHeight, null, 1f, 0xFFff0000); } else { - Canvas c = new Canvas(b); - c.scale(scale, scale); - taskView.mHeaderView.draw(c); - c.setBitmap(null); + return drawViewIntoGraphicBuffer(headerWidth, headerHeight, taskView.mHeaderView, + scale, 0); + } + } + + public static GraphicBuffer drawViewIntoGraphicBuffer(int bufferWidth, int bufferHeight, + View view, float scale, int eraseColor) { + RenderNode node = RenderNode.create("RecentsTransition", null); + node.setLeftTopRightBottom(0, 0, bufferWidth, bufferHeight); + node.setClipToBounds(false); + DisplayListCanvas c = node.start(bufferWidth, bufferHeight); + c.scale(scale, scale); + if (eraseColor != 0) { + c.drawColor(eraseColor); + } + if (view != null) { + view.draw(c); } - return b.createAshmemBitmap(); + node.end(c); + return ThreadedRenderer.createHardwareBitmap(node, bufferWidth, bufferHeight) + .createGraphicBufferHandle(); } /** @@ -399,7 +409,7 @@ public class RecentsTransitionHelper { */ private static AppTransitionAnimationSpec composeAnimationSpec(TaskStackView stackView, TaskView taskView, TaskViewTransform transform, boolean addHeaderBitmap) { - Bitmap b = null; + GraphicBuffer b = null; if (addHeaderBitmap) { b = composeHeaderBitmap(taskView, transform); if (b == null) { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java index 2180ec824fb6..46619c214f12 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java @@ -138,7 +138,7 @@ public class RecentsViewTouchHandler { } mVisibleDockStates.clear(); - if (ActivityManager.supportsMultiWindow() && !ssp.hasDockedTask() + if (ActivityManager.supportsMultiWindow(mRv.getContext()) && !ssp.hasDockedTask() && mDividerSnapAlgorithm.isSplitScreenFeasible()) { Recents.logDockAttempt(mRv.getContext(), event.task.getTopComponent(), event.task.resizeMode); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java index 2c3e78f8cb84..0c6b6b842655 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java @@ -59,7 +59,7 @@ public class TaskViewAccessibilityDelegate extends View.AccessibilityDelegate { @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(host, info); - if (ActivityManager.supportsSplitScreenMultiWindow() + if (ActivityManager.supportsSplitScreenMultiWindow(mTaskView.getContext()) && !Recents.getSystemServices().hasDockedTask()) { TaskStack.DockState[] dockStates = Recents.getConfiguration() .getDockStatesForCurrentOrientation(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java index 8af1628cba76..0e5e4161c886 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java @@ -117,22 +117,27 @@ public class NotificationSnooze extends LinearLayout private ArrayList<SnoozeOption> getDefaultSnoozeOptions() { ArrayList<SnoozeOption> options = new ArrayList<>(); - options.add(createOption(R.string.snooze_option_15_min, 15)); - options.add(createOption(R.string.snooze_option_30_min, 30)); - mDefaultOption = createOption(R.string.snooze_option_1_hour, 60); + options.add(createOption(15 /* minutes */)); + options.add(createOption(30 /* minutes */)); + mDefaultOption = createOption(60 /* minutes */); options.add(mDefaultOption); - options.add(createOption(R.string.snooze_option_2_hour, 60 * 2)); + options.add(createOption(60 * 2 /* minutes */)); return options; } - private SnoozeOption createOption(int descriptionResId, int minutes) { + private SnoozeOption createOption(int minutes) { Resources res = getResources(); - final String description = res.getString(descriptionResId); + boolean showInHours = minutes >= 60; + int pluralResId = showInHours + ? R.plurals.snoozeHourOptions + : R.plurals.snoozeMinuteOptions; + int count = showInHours ? (minutes / 60) : minutes; + String description = res.getQuantityString(pluralResId, count, count); String resultText = String.format(res.getString(R.string.snoozed_for_time), description); SpannableString string = new SpannableString(resultText); string.setSpan(new StyleSpan(Typeface.BOLD), resultText.length() - description.length(), resultText.length(), 0 /* flags */); - return new SnoozeOption(null, minutes, res.getString(descriptionResId), string); + return new SnoozeOption(null, minutes, description, string); } private void createOptionViews() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java index ae6667f8ad4d..ba34ac1c60ab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java @@ -93,6 +93,7 @@ public class ScrimView extends View implements ConfigurationController.Configura mDrawable.setCallback(this); mColors = new ColorExtractor.GradientColors(); updateScreenSize(); + updateColorWithTint(false); // We need to know about configuration changes to update the gradient size // since it's independent from view bounds. @@ -189,6 +190,11 @@ public class ScrimView extends View implements ConfigurationController.Configura return mDrawable; } + @VisibleForTesting + ColorExtractor.GradientColors getColors() { + return mColors; + } + public void setTint(int color) { setTint(color, false); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index c7fbbf956c68..85475b60902f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -179,6 +179,10 @@ public class StatusBarIconView extends AnimatedImageView { mIconScale = (float)imageBounds / (float)outerBounds; } + public float getIconScaleFullyDark() { + return (float) mStatusBarIconDrawingSizeDark / mStatusBarIconDrawingSize; + } + public float getIconScale() { return mIconScale; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index 43c8c2896736..6b30991164fa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -545,7 +545,7 @@ public class NavigationBarFragment extends Fragment implements Callbacks { } private boolean onLongPressRecents() { - if (mRecents == null || !ActivityManager.supportsMultiWindow() + if (mRecents == null || !ActivityManager.supportsMultiWindow(getContext()) || !mDivider.getView().getSnapAlgorithm().isSplitScreenFeasible()) { return false; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java index 9000eb4655d1..f94bb0cdd4f7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java @@ -267,6 +267,9 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { boolean forceOverflow = mSpeedBumpIndex != -1 && i >= mSpeedBumpIndex && iconState.iconAppearAmount > 0.0f || i >= maxVisibleIcons; boolean noOverflowAfter = i == childCount - 1; + float drawingScale = mDark && view instanceof StatusBarIconView + ? ((StatusBarIconView) view).getIconScaleFullyDark() + : 1f; if (mOpenedAmount != 0.0f) { noOverflowAfter = noOverflowAfter && !hasAmbient && !forceOverflow; } @@ -303,7 +306,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { visualOverflowStart += mVisualOverflowAdaption * (1f - mOpenedAmount); } } - translationX += iconState.iconAppearAmount * view.getWidth(); + translationX += iconState.iconAppearAmount * view.getWidth() * drawingScale; } if (firstOverflowIndex != -1) { int numDots = 1; 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 ae8f46f2e0f8..8ce86ff7ceff 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1845,23 +1845,20 @@ public class StatusBar extends SystemUI implements DemoMode, // temporarily become children if they were isolated before. continue; } - int vis = ent.notification.getNotification().visibility; int userId = ent.notification.getUserId(); // Display public version of the notification if we need to redact. - boolean deviceSensitive = (isLockscreenPublicMode(mCurrentUserId) - && !userAllowsPrivateNotificationsInPublic(mCurrentUserId)); - boolean userSensitive = deviceSensitive || (isLockscreenPublicMode(userId) - && !userAllowsPrivateNotificationsInPublic(userId)); - boolean sensitiveNote = vis == Notification.VISIBILITY_PRIVATE; - boolean sensitivePackage = packageHasVisibilityOverride(ent.notification.getKey()); - boolean sensitive = (sensitiveNote && userSensitive) || sensitivePackage; - boolean showingPublic = sensitive && isLockscreenPublicMode(userId); - if (showingPublic) { + boolean devicePublic = isLockscreenPublicMode(mCurrentUserId); + boolean userPublic = devicePublic || isLockscreenPublicMode(userId); + boolean needsRedaction = needsRedaction(ent); + boolean sensitive = userPublic && needsRedaction; + boolean deviceSensitive = devicePublic + && !userAllowsPrivateNotificationsInPublic(mCurrentUserId); + if (sensitive) { updatePublicContentView(ent, ent.notification); } ent.row.setSensitive(sensitive, deviceSensitive); - ent.row.setNeedsRedaction(needsRedaction(ent)); + ent.row.setNeedsRedaction(needsRedaction); if (mGroupManager.isChildInGroupWithSummary(ent.row.getStatusBarNotification())) { ExpandableNotificationRow summary = mGroupManager.getGroupSummary( ent.row.getStatusBarNotification()); @@ -4386,7 +4383,12 @@ public class StatusBar extends SystemUI implements DemoMode, final int userId = mCurrentProfiles.valueAt(i).id; boolean isProfilePublic = devicePublic; if (!devicePublic && userId != mCurrentUserId) { - if (mStatusBarKeyguardViewManager.isSecure(userId)) { + // We can't rely on KeyguardManager#isDeviceLocked() for unified profile challenge + // due to a race condition where this code could be called before + // TrustManagerService updates its internal records, resulting in an incorrect + // state being cached in mLockscreenPublicMode. (b/35951989) + if (mLockPatternUtils.isSeparateProfileChallengeEnabled(userId) + && mStatusBarKeyguardViewManager.isSecure(userId)) { isProfilePublic = mKeyguardManager.isDeviceLocked(userId); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index b05e93f759ea..679d119fd47d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -818,7 +818,8 @@ public class NotificationStackScrollLayout extends ViewGroup */ private float getAppearEndPosition() { int appearPosition; - if (mEmptyShadeView.getVisibility() == GONE) { + int notGoneChildCount = getNotGoneChildCount(); + if (mEmptyShadeView.getVisibility() == GONE && notGoneChildCount != 0) { int minNotificationsForShelf = 1; if (mTrackingHeadsUp || mHeadsUpManager.hasPinnedHeadsUp()) { appearPosition = mHeadsUpManager.getTopHeadsUpPinnedHeight(); @@ -826,7 +827,7 @@ public class NotificationStackScrollLayout extends ViewGroup } else { appearPosition = 0; } - if (getNotGoneChildCount() >= minNotificationsForShelf + if (notGoneChildCount >= minNotificationsForShelf && mShelf.getVisibility() != GONE) { appearPosition += mShelf.getIntrinsicHeight(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java index 2a051e67ce01..08867806f933 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java @@ -16,39 +16,30 @@ package com.android.systemui.statusbar; +import static junit.framework.Assert.assertEquals; + +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; -import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; - -import android.graphics.drawable.VectorDrawable; -import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; +import android.support.test.filters.SmallTest; import android.view.View; import com.android.systemui.SysuiTestCase; -import com.android.systemui.statusbar.ScrimView; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyFloat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.mock; +import com.google.android.colorextraction.ColorExtractor; +import com.google.android.colorextraction.drawable.GradientDrawable; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import static junit.framework.Assert.assertEquals; @RunWith(AndroidTestingRunner.class) @SmallTest @@ -71,6 +62,16 @@ public class ScrimViewTest extends SysuiTestCase { } @Test + public void testCreation_initialColor() { + GradientDrawable drawable = (GradientDrawable) mView.getDrawable(); + ColorExtractor.GradientColors colors = mView.getColors(); + assertEquals("Main color should be set upon creation", + drawable.getMainColor(), colors.getMainColor()); + assertEquals("Secondary color should be set upon creation", + drawable.getSecondaryColor(), colors.getSecondaryColor()); + } + + @Test public void testSetViewAlpha_propagatesToDrawable() { float alpha = 0.5f; mView.setViewAlpha(alpha); diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 7abaf7ff9922..38b796b316de 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -51,6 +51,7 @@ import android.service.autofill.FillEventHistory.Event; import android.service.autofill.FillResponse; import android.service.autofill.IAutoFillService; import android.text.TextUtils; +import android.util.ArraySet; import android.util.LocalLog; import android.util.Slog; import android.util.SparseArray; @@ -465,10 +466,17 @@ final class AutofillManagerServiceImpl { if (sVerbose) Slog.v(TAG, "destroyLocked()"); final int numSessions = mSessions.size(); + final ArraySet<RemoteFillService> remoteFillServices = new ArraySet<>(numSessions); for (int i = 0; i < numSessions; i++) { - mSessions.valueAt(i).destroyLocked(); + final RemoteFillService remoteFillService = mSessions.valueAt(i).destroyLocked(); + if (remoteFillService != null) { + remoteFillServices.add(remoteFillService); + } } mSessions.clear(); + for (int i = 0; i < remoteFillServices.size(); i++) { + remoteFillServices.valueAt(i).destroy(); + } sendStateToClients(true); } diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index bad8dcf42aae..980a7d41200f 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -419,7 +419,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState notifyUnavailableToClient(); } synchronized (mLock) { - processResponseLocked(response); + processResponseLocked(response, requestFlags); } final LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST)) @@ -1026,7 +1026,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState case ACTION_START_SESSION: // View is triggering autofill. mCurrentViewId = viewState.id; - viewState.update(value, virtualBounds); + viewState.update(value, virtualBounds, flags); viewState.setState(ViewState.STATE_STARTED_SESSION); requestNewFillResponseLocked(flags); break; @@ -1065,7 +1065,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } // If the ViewState is ready to be displayed, onReady() will be called. - viewState.update(value, virtualBounds); + viewState.update(value, virtualBounds, flags); break; case ACTION_VIEW_EXITED: if (mCurrentViewId == viewState.id) { @@ -1204,10 +1204,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Replace the old response mResponses.put(newResponse.getRequestId(), newResponse); // Now process the new response - processResponseLocked(newResponse); + processResponseLocked(newResponse, 0); } - private void processResponseLocked(@NonNull FillResponse newResponse) { + private void processResponseLocked(@NonNull FillResponse newResponse, int flags) { // Make sure we are hiding the UI which will be shown // only if handling the current response requires it. hideAllUiIfOwnedByMe(); @@ -1215,7 +1215,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final int requestId = newResponse.getRequestId(); if (sVerbose) { Slog.v(TAG, "processResponseLocked(): mCurrentViewId=" + mCurrentViewId - + ", reqId=" + requestId + ", resp=" + newResponse); + + ",flags=" + flags + ", reqId=" + requestId + ", resp=" + newResponse); } if (mResponses == null) { @@ -1231,21 +1231,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } - final ArrayList<Dataset> datasets = newResponse.getDatasets(); - - if (datasets != null && datasets.size() == 1) { - // Check if it its a single response for a manual request, in which case it should - // be automatically filled - final FillContext context = getFillContextByRequestIdLocked(requestId); - if (context != null && (context.getStructure().getFlags() & FLAG_MANUAL_REQUEST) != 0) { - Slog.d(TAG, "autofilling manual request directly"); - autoFill(requestId, 0, datasets.get(0)); - return; - } - } // Updates the UI, if necessary. final ViewState currentView = mViewStates.get(mCurrentViewId); - currentView.maybeCallOnFillReady(); + currentView.maybeCallOnFillReady(flags); } /** @@ -1331,20 +1319,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return viewState; } - /** - * Resets the given state from all existing views in the given dataset. - */ - private void resetViewStatesLocked(@NonNull Dataset dataset, int state) { - final ArrayList<AutofillId> ids = dataset.getFieldIds(); - for (int j = 0; j < ids.size(); j++) { - final AutofillId id = ids.get(j); - final ViewState viewState = mViewStates.get(id); - if (viewState != null) { - viewState.resetState(state); - } - } - } - void autoFill(int requestId, int datasetIndex, Dataset dataset) { synchronized (mLock) { if (mDestroyed) { @@ -1452,8 +1426,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } try { - if (sDebug) Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset); - // Skip null values as a null values means no change final int entryCount = dataset.getFieldIds().size(); final List<AutofillId> ids = new ArrayList<>(entryCount); @@ -1480,6 +1452,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (waitingDatasetAuth) { hideFillUiIfOwnedByMe(); } + if (sDebug) Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset); + mClient.autofill(id, ids, values); setViewStatesLocked(null, dataset, ViewState.STATE_AUTOFILLED, false); } @@ -1496,15 +1470,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - void destroyLocked() { + RemoteFillService destroyLocked() { if (mDestroyed) { - return; + return null; } - mRemoteFillService.destroy(); hideAllUiIfOwnedByMe(); mUi.clearCallback(this); mDestroyed = true; mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_FINISHED, mPackageName); + return mRemoteFillService; } private void hideAllUiIfOwnedByMe() { @@ -1528,8 +1502,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState + id + " destroyed"); return; } - destroyLocked(); + final RemoteFillService remoteFillService = destroyLocked(); mService.removeSessionLocked(id); + if (remoteFillService != null) { + remoteFillService.destroy(); + } } private int getLastResponseIndex() { diff --git a/services/autofill/java/com/android/server/autofill/ViewState.java b/services/autofill/java/com/android/server/autofill/ViewState.java index 8a52c965345c..cd8f4a59526f 100644 --- a/services/autofill/java/com/android/server/autofill/ViewState.java +++ b/services/autofill/java/com/android/server/autofill/ViewState.java @@ -16,6 +16,7 @@ package com.android.server.autofill; +import static android.service.autofill.FillRequest.FLAG_MANUAL_REQUEST; import static com.android.server.autofill.Helper.sDebug; import static com.android.server.autofill.Helper.sVerbose; @@ -157,7 +158,7 @@ final class ViewState { // TODO: refactor / rename / document this method (and maybeCallOnFillReady) to make it clear // that it can change the value and update the UI; similarly, should replace code that // directly sets mAutofillValue to use encapsulation. - void update(@Nullable AutofillValue autofillValue, @Nullable Rect virtualBounds) { + void update(@Nullable AutofillValue autofillValue, @Nullable Rect virtualBounds, int flags) { if (autofillValue != null) { mCurrentValue = autofillValue; } @@ -165,7 +166,7 @@ final class ViewState { mVirtualBounds = virtualBounds; } - maybeCallOnFillReady(); + maybeCallOnFillReady(flags); } /** @@ -173,8 +174,8 @@ final class ViewState { * Listener#onFillReady(FillResponse, AutofillId, AutofillValue)} if the * fill UI is ready to be displayed (i.e. when response and bounds are set). */ - void maybeCallOnFillReady() { - if ((mState & STATE_AUTOFILLED) != 0) { + void maybeCallOnFillReady(int flags) { + if ((mState & STATE_AUTOFILLED) != 0 && (flags & FLAG_MANUAL_REQUEST) == 0) { if (sDebug) Slog.d(TAG, "Ignoring UI for " + id + " on " + getStateAsString()); return; } diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java index d315b3d7b70f..d566d3d608b4 100644 --- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java @@ -158,6 +158,7 @@ final class FillUi { final RemoteViews presentation = dataset.getFieldPresentation(index); final View view; try { + if (sVerbose) Slog.v(TAG, "setting remote view for " + focusedViewId); view = presentation.apply(context, null, interceptionHandler); } catch (RuntimeException e) { Slog.e(TAG, "Error inflating remote views", e); @@ -203,6 +204,7 @@ final class FillUi { return; } if (count <= 0) { + if (sDebug) Slog.d(TAG, "No dataset matches filter: " + mFilterText); mCallback.requestHideFillUi(); } else { if (updateContentSize()) { @@ -382,6 +384,7 @@ final class FillUi { * Shows the window. */ public void show(WindowManager.LayoutParams params) { + if (sVerbose) Slog.v(TAG, "show(): showing=" + mShowing + ", params="+ params); try { if (!mShowing) { params.accessibilityTitle = mContentView.getContext() diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 248c93a30b4f..f57cf261059e 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -13903,9 +13903,9 @@ public class ActivityManagerService extends IActivityManager.Stub final boolean supportsPictureInPicture = mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); - final boolean supportsMultiWindow = ActivityManager.supportsMultiWindow(); + final boolean supportsMultiWindow = ActivityManager.supportsMultiWindow(mContext); final boolean supportsSplitScreenMultiWindow = - ActivityManager.supportsSplitScreenMultiWindow(); + ActivityManager.supportsSplitScreenMultiWindow(mContext); final boolean supportsMultiDisplay = mContext.getPackageManager() .hasSystemFeature(FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS); final String debugApp = Settings.Global.getString(resolver, DEBUG_APP); @@ -20159,6 +20159,11 @@ public class ActivityManagerService extends IActivityManager.Stub mTempConfig.setTo(getGlobalConfiguration()); final int changes = mTempConfig.updateFrom(values); if (changes == 0) { + // Since calling to Activity.setRequestedOrientation leads to freezing the window with + // setting WindowManagerService.mWaitingForConfig to true, it is important that we call + // performDisplayOverrideConfigUpdate in order to send the new display configuration + // (even if there are no actual changes) to unfreeze the window. + performDisplayOverrideConfigUpdate(values, deferResume, DEFAULT_DISPLAY); return 0; } @@ -20347,20 +20352,19 @@ public class ActivityManagerService extends IActivityManager.Stub int displayId) { mTempConfig.setTo(mStackSupervisor.getDisplayOverrideConfiguration(displayId)); final int changes = mTempConfig.updateFrom(values); - if (changes == 0) { - return 0; - } - - Slog.i(TAG, "Override config changes=" + Integer.toHexString(changes) + " " + mTempConfig - + " for displayId=" + displayId); - mStackSupervisor.setDisplayOverrideConfiguration(mTempConfig, displayId); + if (changes != 0) { + Slog.i(TAG, "Override config changes=" + Integer.toHexString(changes) + " " + + mTempConfig + " for displayId=" + displayId); + mStackSupervisor.setDisplayOverrideConfiguration(mTempConfig, displayId); - final boolean isDensityChange = (changes & ActivityInfo.CONFIG_DENSITY) != 0; - if (isDensityChange && displayId == DEFAULT_DISPLAY) { - // Reset the unsupported display size dialog. - mUiHandler.sendEmptyMessage(SHOW_UNSUPPORTED_DISPLAY_SIZE_DIALOG_MSG); + final boolean isDensityChange = (changes & ActivityInfo.CONFIG_DENSITY) != 0; + if (isDensityChange && displayId == DEFAULT_DISPLAY) { + // Reset the unsupported display size dialog. + mUiHandler.sendEmptyMessage(SHOW_UNSUPPORTED_DISPLAY_SIZE_DIALOG_MSG); - killAllBackgroundProcessesExcept(N, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); + killAllBackgroundProcessesExcept(N, + ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); + } } // Update the configuration with WM first and check if any of the stacks need to be resized diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index 6eae9e6f9b05..d7683047143a 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -2382,7 +2382,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (res == null) { return -1; } - pw.println(ActivityManager.supportsMultiWindow()); + pw.println(ActivityManager.supportsMultiWindow(mInternal.mContext)); return 0; } @@ -2391,7 +2391,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (res == null) { return -1; } - pw.println(ActivityManager.supportsSplitScreenMultiWindow()); + pw.println(ActivityManager.supportsSplitScreenMultiWindow(mInternal.mContext)); return 0; } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 5636e197aaee..9698a8fa91fd 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -130,6 +130,7 @@ import android.content.pm.ApplicationInfo; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.graphics.Bitmap; +import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; @@ -1419,19 +1420,17 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo break; case ANIM_THUMBNAIL_SCALE_UP: case ANIM_THUMBNAIL_SCALE_DOWN: - boolean scaleUp = (animationType == ANIM_THUMBNAIL_SCALE_UP); - service.mWindowManager.overridePendingAppTransitionThumb( - pendingOptions.getThumbnail(), + final boolean scaleUp = (animationType == ANIM_THUMBNAIL_SCALE_UP); + final GraphicBuffer buffer = pendingOptions.getThumbnail(); + service.mWindowManager.overridePendingAppTransitionThumb(buffer, pendingOptions.getStartX(), pendingOptions.getStartY(), pendingOptions.getOnAnimationStartListener(), scaleUp); if (intent.getSourceBounds() == null) { intent.setSourceBounds(new Rect(pendingOptions.getStartX(), pendingOptions.getStartY(), - pendingOptions.getStartX() - + pendingOptions.getThumbnail().getWidth(), - pendingOptions.getStartY() - + pendingOptions.getThumbnail().getHeight())); + pendingOptions.getStartX() + buffer.getWidth(), + pendingOptions.getStartY() + buffer.getHeight())); } break; case ANIM_THUMBNAIL_ASPECT_SCALE_UP: diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 473c3c2eeba1..074506e7f4a2 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -470,7 +470,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } Configuration getDisplayOverrideConfiguration(int displayId) { - final ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); if (activityDisplay == null) { throw new IllegalArgumentException("No display found with id: " + displayId); } @@ -479,7 +479,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } void setDisplayOverrideConfiguration(Configuration overrideConfiguration, int displayId) { - final ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); if (activityDisplay == null) { throw new IllegalArgumentException("No display found with id: " + displayId); } @@ -507,7 +507,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (displayId == INVALID_DISPLAY) { return false; } - final ActivityDisplay targetDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay targetDisplay = getActivityDisplayOrCreateLocked(displayId); if (targetDisplay == null) { throw new IllegalArgumentException("No display found with id: " + displayId); } @@ -1688,7 +1688,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check: displayId=" + launchDisplayId + " callingPid=" + callingPid + " callingUid=" + callingUid); - final ActivityDisplay activityDisplay = mActivityDisplays.get(launchDisplayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(launchDisplayId); if (activityDisplay == null) { Slog.w(TAG, "Launch on display check: display not found"); return false; @@ -2207,7 +2207,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D * @return Existing stack if there is a valid one, new dynamic stack if it is valid or null. */ ActivityStack getValidLaunchStackOnDisplay(int displayId, @NonNull ActivityRecord r) { - final ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); if (activityDisplay == null) { throw new IllegalArgumentException( "Display with displayId=" + displayId + " not found."); @@ -2258,10 +2258,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D for (int i = mTmpOrderedDisplayIds.size() - 1; i >= 0; --i) { final int displayId = mTmpOrderedDisplayIds.get(i); - final List<ActivityStack> stacks = mActivityDisplays.get(displayId).mStacks; - if (stacks == null) { - continue; - } + // If a display is registered in WM, it must also be available in AM. + @SuppressWarnings("ConstantConditions") + final List<ActivityStack> stacks = getActivityDisplayOrCreateLocked(displayId).mStacks; for (int j = stacks.size() - 1; j >= 0; --j) { final ActivityStack stack = stacks.get(j); if (stack != currentFocus && stack.isFocusable() @@ -2592,7 +2591,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } ActivityStack createStackOnDisplay(int stackId, int displayId, boolean onTop) { - final ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); if (activityDisplay == null) { return null; } @@ -2824,7 +2823,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D * @param onTop Indicates whether container should be place on top or on bottom. */ void moveStackToDisplayLocked(int stackId, int displayId, boolean onTop) { - final ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); if (activityDisplay == null) { throw new IllegalArgumentException("moveStackToDisplayLocked: Unknown displayId=" + displayId); @@ -3931,25 +3930,44 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } private void handleDisplayAdded(int displayId) { - boolean newDisplay; synchronized (mService) { - newDisplay = mActivityDisplays.get(displayId) == null; - if (newDisplay) { - ActivityDisplay activityDisplay = new ActivityDisplay(displayId); - if (activityDisplay.mDisplay == null) { - Slog.w(TAG, "Display " + displayId + " gone before initialization complete"); - return; - } - mActivityDisplays.put(displayId, activityDisplay); - calculateDefaultMinimalSizeOfResizeableTasks(activityDisplay); - mWindowManager.onDisplayAdded(displayId); - } + getActivityDisplayOrCreateLocked(displayId); } } /** Check if display with specified id is added to the list. */ boolean isDisplayAdded(int displayId) { - return mActivityDisplays.get(displayId) != null; + return getActivityDisplayOrCreateLocked(displayId) != null; + } + + /** + * Get an existing instance of {@link ActivityDisplay} or create new if there is a + * corresponding record in display manager. + */ + private ActivityDisplay getActivityDisplayOrCreateLocked(int displayId) { + ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + if (activityDisplay != null) { + return activityDisplay; + } + if (mDisplayManager == null) { + // The system isn't fully initialized yet. + return null; + } + final Display display = mDisplayManager.getDisplay(displayId); + if (display == null) { + // The display is not registered in DisplayManager. + return null; + } + // The display hasn't been added to ActivityManager yet, create a new record now. + activityDisplay = new ActivityDisplay(displayId); + if (activityDisplay.mDisplay == null) { + Slog.w(TAG, "Display " + displayId + " gone before initialization complete"); + return null; + } + mActivityDisplays.put(displayId, activityDisplay); + calculateDefaultMinimalSizeOfResizeableTasks(activityDisplay); + mWindowManager.onDisplayAdded(displayId); + return activityDisplay; } private void calculateDefaultMinimalSizeOfResizeableTasks(ActivityDisplay display) { @@ -4007,6 +4025,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D info.stackId = stack.mStackId; info.userId = stack.mCurrentUser; info.visible = stack.shouldBeVisible(null) == STACK_VISIBLE; + // A stack might be not attached to a display. info.position = display != null ? display.mStacks.indexOf(stack) : 0; @@ -4622,7 +4641,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D @Override public void addToDisplay(int displayId) { synchronized (mService) { - ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); if (activityDisplay == null) { return; } diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index e15b13527c3e..c20221bfe4aa 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -17,6 +17,8 @@ package com.android.server.am; import static com.android.internal.os.BatteryStatsImpl.ExternalStatsSync.UPDATE_CPU; +import static com.android.internal.os.BatteryStatsImpl.ExternalStatsSync.UPDATE_RADIO; +import static com.android.internal.os.BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI; import android.annotation.Nullable; import android.bluetooth.BluetoothActivityEnergyInfo; @@ -231,10 +233,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void publish(Context context) { mContext = context; - mStats.setRadioScanningTimeout(mContext.getResources().getInteger( - com.android.internal.R.integer.config_radioScanningTimeout) - * 1000L); - mStats.setPowerProfile(new PowerProfile(context)); + synchronized (mStats) { + mStats.setRadioScanningTimeoutLocked(mContext.getResources().getInteger( + com.android.internal.R.integer.config_radioScanningTimeout) + * 1000L); + mStats.setPowerProfileLocked(new PowerProfile(context)); + } ServiceManager.addService(BatteryStats.SERVICE_NAME, asBinder()); } @@ -245,9 +249,11 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void initPowerManagement() { final PowerManagerInternal powerMgr = LocalServices.getService(PowerManagerInternal.class); powerMgr.registerLowPowerModeObserver(this); - mStats.notePowerSaveMode( - powerMgr.getLowPowerState(ServiceType.BATTERY_STATS) - .batterySaverEnabled); + synchronized (mStats) { + mStats.notePowerSaveModeLocked( + powerMgr.getLowPowerState(ServiceType.BATTERY_STATS) + .batterySaverEnabled); + } (new WakeupReasonThread()).start(); } @@ -280,7 +286,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public void onLowPowerModeChanged(PowerSaveState result) { synchronized (mStats) { - mStats.notePowerSaveMode(result.batterySaverEnabled); + mStats.notePowerSaveModeLocked(result.batterySaverEnabled); } } @@ -606,8 +612,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void noteMobileRadioPowerState(int powerState, long timestampNs, int uid) { enforceCallingPermission(); + boolean update; synchronized (mStats) { - mStats.noteMobileRadioPowerState(powerState, timestampNs, uid); + update = mStats.noteMobileRadioPowerStateLocked(powerState, timestampNs, uid); + } + + if (update) { + mHandler.scheduleSync("modem-data", UPDATE_RADIO); } } @@ -759,7 +770,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM) ? "active" : "inactive"; mHandler.scheduleSync("wifi-data: " + type, - BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI); + UPDATE_WIFI); } mStats.noteWifiRadioPowerState(powerState, tsNanos, uid); } @@ -917,9 +928,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public void noteNetworkStatsEnabled() { enforceCallingPermission(); - synchronized (mStats) { - mStats.noteNetworkStatsEnabledLocked(); - } + mHandler.scheduleSync("network-stats-enabled", UPDATE_RADIO | UPDATE_WIFI); } @Override @@ -945,10 +954,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub } @Override - public void noteBleScanStarted(WorkSource ws) { + public void noteBleScanStarted(WorkSource ws, boolean isUnoptimized) { enforceCallingPermission(); synchronized (mStats) { - mStats.noteBluetoothScanStartedFromSourceLocked(ws); + mStats.noteBluetoothScanStartedFromSourceLocked(ws, isUnoptimized); } } @@ -985,9 +994,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub return; } - synchronized (mStats) { - mStats.updateWifiStateLocked(info); - } + mStats.updateWifiState(info); } @Override @@ -1012,9 +1019,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub return; } - synchronized (mStats) { - mStats.updateMobileRadioStateLocked(SystemClock.elapsedRealtime(), info); - } + mStats.updateMobileRadioState(info); } public boolean isOnBattery() { @@ -1489,7 +1494,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub return; } - if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI) != 0) { + if ((updateFlags & UPDATE_WIFI) != 0) { if (mWifiManager == null) { mWifiManager = IWifiManager.Stub.asInterface( ServiceManager.getService(Context.WIFI_SERVICE)); @@ -1558,14 +1563,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub mStats.updateKernelWakelocksLocked(); mStats.updateKernelMemoryBandwidthLocked(); - if (wifiInfo != null) { - if (wifiInfo.isValid()) { - mStats.updateWifiStateLocked(extractDelta(wifiInfo)); - } else { - Slog.e(TAG, "wifi info is invalid: " + wifiInfo); - } - } - if (bluetoothInfo != null) { if (bluetoothInfo.isValid()) { mStats.updateBluetoothStateLocked(bluetoothInfo); @@ -1573,14 +1570,21 @@ public final class BatteryStatsService extends IBatteryStats.Stub Slog.e(TAG, "bluetooth info is invalid: " + bluetoothInfo); } } + } - if (modemInfo != null) { - if (modemInfo.isValid()) { - mStats.updateMobileRadioStateLocked(SystemClock.elapsedRealtime(), - modemInfo); - } else { - Slog.e(TAG, "modem info is invalid: " + modemInfo); - } + if (wifiInfo != null) { + if (wifiInfo.isValid()) { + mStats.updateWifiState(extractDelta(wifiInfo)); + } else { + Slog.e(TAG, "wifi info is invalid: " + wifiInfo); + } + } + + if (modemInfo != null) { + if (modemInfo.isValid()) { + mStats.updateMobileRadioState(modemInfo); + } else { + Slog.e(TAG, "modem info is invalid: " + modemInfo); } } } diff --git a/services/core/java/com/android/server/am/ProviderMap.java b/services/core/java/com/android/server/am/ProviderMap.java index a6997f944a4c..32d03daedef3 100644 --- a/services/core/java/com/android/server/am/ProviderMap.java +++ b/services/core/java/com/android/server/am/ProviderMap.java @@ -382,18 +382,29 @@ public final class ProviderMap { } /** - * Invokes IApplicationThread.dumpProvider() on the thread of the specified provider if - * there is a thread associated with the provider. + * Before invoking IApplicationThread.dumpProvider(), print meta information to the print + * writer and handle passed flags. */ private void dumpProvider(String prefix, FileDescriptor fd, PrintWriter pw, final ContentProviderRecord r, String[] args, boolean dumpAll) { + for (String s: args) { + if (!dumpAll && s.contains("--proto")) { + if (r.proc != null && r.proc.thread != null) { + dumpToTransferPipe(null , fd, pw, r, args); + } + return; + } + } String innerPrefix = prefix + " "; synchronized (mAm) { pw.print(prefix); pw.print("PROVIDER "); - pw.print(r); - pw.print(" pid="); - if (r.proc != null) pw.println(r.proc.pid); - else pw.println("(not running)"); + pw.print(r); + pw.print(" pid="); + if (r.proc != null) { + pw.println(r.proc.pid); + } else { + pw.println("(not running)"); + } if (dumpAll) { r.dump(pw, innerPrefix, true); } @@ -401,23 +412,32 @@ public final class ProviderMap { if (r.proc != null && r.proc.thread != null) { pw.println(" Client:"); pw.flush(); + dumpToTransferPipe(" ", fd, pw, r, args); + } + } + + /** + * Invokes IApplicationThread.dumpProvider() on the thread of the specified provider without + * any meta string (e.g., provider info, indentation) written to the file descriptor. + */ + private void dumpToTransferPipe(String prefix, FileDescriptor fd, PrintWriter pw, + final ContentProviderRecord r, String[] args) { + try { + TransferPipe tp = new TransferPipe(); try { - TransferPipe tp = new TransferPipe(); - try { - r.proc.thread.dumpProvider( - tp.getWriteFd(), r.provider.asBinder(), args); - tp.setBufferPrefix(" "); - // Short timeout, since blocking here can - // deadlock with the application. - tp.go(fd, 2000); - } finally { - tp.kill(); - } - } catch (IOException ex) { - pw.println(" Failure while dumping the provider: " + ex); - } catch (RemoteException ex) { - pw.println(" Got a RemoteException while dumping the service"); + r.proc.thread.dumpProvider( + tp.getWriteFd(), r.provider.asBinder(), args); + tp.setBufferPrefix(prefix); + // Short timeout, since blocking here can + // deadlock with the application. + tp.go(fd, 2000); + } finally { + tp.kill(); } + } catch (IOException ex) { + pw.println(" Failure while dumping the provider: " + ex); + } catch (RemoteException ex) { + pw.println(" Got a RemoteException while dumping the service"); } } } diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index cb1413edaa36..9767e72887ed 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -202,6 +202,7 @@ public class Tethering extends BaseNetworkObserver implements IControlsTethering final Handler smHandler = mTetherMasterSM.getHandler(); mOffloadController = new OffloadController(smHandler, deps.getOffloadHardwareInterface(smHandler, mLog), + mContext.getContentResolver(), mLog); mUpstreamNetworkMonitor = new UpstreamNetworkMonitor( mContext, mTetherMasterSM, TetherMasterSM.EVENT_UPSTREAM_CALLBACK, mLog); diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java index 12899d803ca4..c64e70516abc 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java @@ -16,9 +16,13 @@ package com.android.server.connectivity.tethering; +import static android.provider.Settings.Global.TETHER_OFFLOAD_DISABLED; + +import android.content.ContentResolver; import android.net.LinkProperties; -import android.os.Handler; import android.net.util.SharedLog; +import android.os.Handler; +import android.provider.Settings; /** * A class to encapsulate the business logic of programming the tethering @@ -31,19 +35,22 @@ public class OffloadController { private final Handler mHandler; private final OffloadHardwareInterface mHwInterface; + private final ContentResolver mContentResolver; private final SharedLog mLog; private boolean mConfigInitialized; private boolean mControlInitialized; private LinkProperties mUpstreamLinkProperties; - public OffloadController(Handler h, OffloadHardwareInterface hwi, SharedLog log) { + public OffloadController(Handler h, OffloadHardwareInterface hwi, + ContentResolver contentResolver, SharedLog log) { mHandler = h; mHwInterface = hwi; + mContentResolver = contentResolver; mLog = log.forSubComponent(TAG); } public void start() { - if (started()) return; + if (isOffloadDisabled() || started()) return; if (!mConfigInitialized) { mConfigInitialized = mHwInterface.initOffloadConfig(); @@ -91,6 +98,11 @@ public class OffloadController { // TODO: public void addDownStream(...) + private boolean isOffloadDisabled() { + // Defaults to |false| if not present. + return (Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0) != 0); + } + private boolean started() { return mConfigInitialized && mControlInitialized; } diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index 7b0e51e644fe..d1fa5efe4dc1 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -198,7 +198,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub // A null routeId means that the client wants to unselect its current route. // The explicit flag indicates whether the change was explicitly requested by the // user or the application which may cause changes to propagate out to the rest - // of the system. Should be false when the change is in response to a new globally + // of the system. Should be false when the change is in response to a new // selected route or a default selection. @Override public void setSelectedRoute(IMediaRouterClient client, String routeId, boolean explicit) { @@ -387,15 +387,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub } clientRecord.mSelectedRouteId = routeId; - if (explicit) { - // Any app can disconnect from the globally selected route. + // Only let the system connect to new global routes for now. + // A similar check exists in the display manager for wifi display. + if (explicit && clientRecord.mTrusted) { if (oldRouteId != null) { clientRecord.mUserRecord.mHandler.obtainMessage( UserHandler.MSG_UNSELECT_ROUTE, oldRouteId).sendToTarget(); } - // Only let the system connect to new global routes for now. - // A similar check exists in the display manager for wifi display. - if (routeId != null && clientRecord.mTrusted) { + if (routeId != null) { clientRecord.mUserRecord.mHandler.obtainMessage( UserHandler.MSG_SELECT_ROUTE, routeId).sendToTarget(); } @@ -517,7 +516,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub } MediaRouterClientState getState() { - return mTrusted ? mUserRecord.mTrustedState : mUserRecord.mUntrustedState; + return mTrusted ? mUserRecord.mRouterState : null; } public void dump(PrintWriter pw, String prefix) { @@ -544,8 +543,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub public final int mUserId; public final ArrayList<ClientRecord> mClientRecords = new ArrayList<ClientRecord>(); public final UserHandler mHandler; - public MediaRouterClientState mTrustedState; - public MediaRouterClientState mUntrustedState; + public MediaRouterClientState mRouterState; public UserRecord(int userId) { mUserId = userId; @@ -566,8 +564,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub } pw.println(indent + "State"); - pw.println(indent + "mTrustedState=" + mTrustedState); - pw.println(indent + "mUntrustedState=" + mUntrustedState); + pw.println(indent + "mRouterState=" + mRouterState); if (!mHandler.runWithScissors(new Runnable() { @Override @@ -592,13 +589,6 @@ public final class MediaRouterService extends IMediaRouterService.Stub * this class encapsulates all of the associated functionality and exports state * to the service as it evolves. * </p><p> - * One important task of this class is to keep track of the current globally selected - * route id for certain routes that have global effects, such as remote displays. - * Global route selections override local selections made within apps. The change - * is propagated to all apps so that they are all in sync. Synchronization works - * both ways. Whenever the globally selected route is explicitly unselected by any - * app, then it becomes unselected globally and all apps are informed. - * </p><p> * This class is currently hardcoded to work with remote display providers but * it is intended to be eventually extended to support more general route providers * similar to the support library media router. @@ -639,7 +629,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub private boolean mRunning; private int mDiscoveryMode = RemoteDisplayState.DISCOVERY_MODE_NONE; - private RouteRecord mGloballySelectedRouteRecord; + private RouteRecord mSelectedRouteRecord; private int mConnectionPhase = PHASE_NOT_AVAILABLE; private int mConnectionTimeoutReason; private long mConnectionTimeoutStartTime; @@ -701,7 +691,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub final String indent = prefix + " "; pw.println(indent + "mRunning=" + mRunning); pw.println(indent + "mDiscoveryMode=" + mDiscoveryMode); - pw.println(indent + "mGloballySelectedRouteRecord=" + mGloballySelectedRouteRecord); + pw.println(indent + "mSelectedRouteRecord=" + mSelectedRouteRecord); pw.println(indent + "mConnectionPhase=" + mConnectionPhase); pw.println(indent + "mConnectionTimeoutReason=" + mConnectionTimeoutReason); pw.println(indent + "mConnectionTimeoutStartTime=" + (mConnectionTimeoutReason != 0 ? @@ -729,7 +719,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub private void stop() { if (mRunning) { mRunning = false; - unselectGloballySelectedRoute(); + unselectSelectedRoute(); mWatcher.stop(); // also stops all providers } } @@ -768,15 +758,15 @@ public final class MediaRouterService extends IMediaRouterService.Stub private void selectRoute(String routeId) { if (routeId != null - && (mGloballySelectedRouteRecord == null - || !routeId.equals(mGloballySelectedRouteRecord.getUniqueId()))) { + && (mSelectedRouteRecord == null + || !routeId.equals(mSelectedRouteRecord.getUniqueId()))) { RouteRecord routeRecord = findRouteRecord(routeId); if (routeRecord != null) { - unselectGloballySelectedRoute(); + unselectSelectedRoute(); - Slog.i(TAG, "Selected global route:" + routeRecord); - mGloballySelectedRouteRecord = routeRecord; - checkGloballySelectedRouteState(); + Slog.i(TAG, "Selected route:" + routeRecord); + mSelectedRouteRecord = routeRecord; + checkSelectedRouteState(); routeRecord.getProvider().setSelectedDisplay(routeRecord.getDescriptorId()); scheduleUpdateClientState(); @@ -786,34 +776,34 @@ public final class MediaRouterService extends IMediaRouterService.Stub private void unselectRoute(String routeId) { if (routeId != null - && mGloballySelectedRouteRecord != null - && routeId.equals(mGloballySelectedRouteRecord.getUniqueId())) { - unselectGloballySelectedRoute(); + && mSelectedRouteRecord != null + && routeId.equals(mSelectedRouteRecord.getUniqueId())) { + unselectSelectedRoute(); } } - private void unselectGloballySelectedRoute() { - if (mGloballySelectedRouteRecord != null) { - Slog.i(TAG, "Unselected global route:" + mGloballySelectedRouteRecord); - mGloballySelectedRouteRecord.getProvider().setSelectedDisplay(null); - mGloballySelectedRouteRecord = null; - checkGloballySelectedRouteState(); + private void unselectSelectedRoute() { + if (mSelectedRouteRecord != null) { + Slog.i(TAG, "Unselected route:" + mSelectedRouteRecord); + mSelectedRouteRecord.getProvider().setSelectedDisplay(null); + mSelectedRouteRecord = null; + checkSelectedRouteState(); scheduleUpdateClientState(); } } private void requestSetVolume(String routeId, int volume) { - if (mGloballySelectedRouteRecord != null - && routeId.equals(mGloballySelectedRouteRecord.getUniqueId())) { - mGloballySelectedRouteRecord.getProvider().setDisplayVolume(volume); + if (mSelectedRouteRecord != null + && routeId.equals(mSelectedRouteRecord.getUniqueId())) { + mSelectedRouteRecord.getProvider().setDisplayVolume(volume); } } private void requestUpdateVolume(String routeId, int direction) { - if (mGloballySelectedRouteRecord != null - && routeId.equals(mGloballySelectedRouteRecord.getUniqueId())) { - mGloballySelectedRouteRecord.getProvider().adjustDisplayVolume(direction); + if (mSelectedRouteRecord != null + && routeId.equals(mSelectedRouteRecord.getUniqueId())) { + mSelectedRouteRecord.getProvider().adjustDisplayVolume(direction); } } @@ -839,7 +829,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub provider.setCallback(null); provider.setDiscoveryMode(RemoteDisplayState.DISCOVERY_MODE_NONE); - checkGloballySelectedRouteState(); + checkSelectedRouteState(); scheduleUpdateClientState(); } } @@ -856,35 +846,34 @@ public final class MediaRouterService extends IMediaRouterService.Stub if (index >= 0) { ProviderRecord providerRecord = mProviderRecords.get(index); if (providerRecord.updateDescriptor(state)) { - checkGloballySelectedRouteState(); + checkSelectedRouteState(); scheduleUpdateClientState(); } } } /** - * This function is called whenever the state of the globally selected route - * may have changed. It checks the state and updates timeouts or unselects - * the route as appropriate. + * This function is called whenever the state of the selected route may have changed. + * It checks the state and updates timeouts or unselects the route as appropriate. */ - private void checkGloballySelectedRouteState() { + private void checkSelectedRouteState() { // Unschedule timeouts when the route is unselected. - if (mGloballySelectedRouteRecord == null) { + if (mSelectedRouteRecord == null) { mConnectionPhase = PHASE_NOT_AVAILABLE; updateConnectionTimeout(0); return; } // Ensure that the route is still present and enabled. - if (!mGloballySelectedRouteRecord.isValid() - || !mGloballySelectedRouteRecord.isEnabled()) { + if (!mSelectedRouteRecord.isValid() + || !mSelectedRouteRecord.isEnabled()) { updateConnectionTimeout(TIMEOUT_REASON_NOT_AVAILABLE); return; } // Make sure we haven't lost our connection. final int oldPhase = mConnectionPhase; - mConnectionPhase = getConnectionPhase(mGloballySelectedRouteRecord.getStatus()); + mConnectionPhase = getConnectionPhase(mSelectedRouteRecord.getStatus()); if (oldPhase >= PHASE_CONNECTING && mConnectionPhase < PHASE_CONNECTING) { updateConnectionTimeout(TIMEOUT_REASON_CONNECTION_LOST); return; @@ -894,15 +883,13 @@ public final class MediaRouterService extends IMediaRouterService.Stub switch (mConnectionPhase) { case PHASE_CONNECTED: if (oldPhase != PHASE_CONNECTED) { - Slog.i(TAG, "Connected to global route: " - + mGloballySelectedRouteRecord); + Slog.i(TAG, "Connected to route: " + mSelectedRouteRecord); } updateConnectionTimeout(0); break; case PHASE_CONNECTING: if (oldPhase != PHASE_CONNECTING) { - Slog.i(TAG, "Connecting to global route: " - + mGloballySelectedRouteRecord); + Slog.i(TAG, "Connecting to route: " + mSelectedRouteRecord); } updateConnectionTimeout(TIMEOUT_REASON_WAITING_FOR_CONNECTED); break; @@ -943,7 +930,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub } private void connectionTimedOut() { - if (mConnectionTimeoutReason == 0 || mGloballySelectedRouteRecord == null) { + if (mConnectionTimeoutReason == 0 || mSelectedRouteRecord == null) { // Shouldn't get here. There must be a bug somewhere. Log.wtf(TAG, "Handled connection timeout for no reason."); return; @@ -951,28 +938,28 @@ public final class MediaRouterService extends IMediaRouterService.Stub switch (mConnectionTimeoutReason) { case TIMEOUT_REASON_NOT_AVAILABLE: - Slog.i(TAG, "Global route no longer available: " - + mGloballySelectedRouteRecord); + Slog.i(TAG, "Selected route no longer available: " + + mSelectedRouteRecord); break; case TIMEOUT_REASON_CONNECTION_LOST: - Slog.i(TAG, "Global route connection lost: " - + mGloballySelectedRouteRecord); + Slog.i(TAG, "Selected route connection lost: " + + mSelectedRouteRecord); break; case TIMEOUT_REASON_WAITING_FOR_CONNECTING: - Slog.i(TAG, "Global route timed out while waiting for " + Slog.i(TAG, "Selected route timed out while waiting for " + "connection attempt to begin after " + (SystemClock.uptimeMillis() - mConnectionTimeoutStartTime) - + " ms: " + mGloballySelectedRouteRecord); + + " ms: " + mSelectedRouteRecord); break; case TIMEOUT_REASON_WAITING_FOR_CONNECTED: - Slog.i(TAG, "Global route timed out while connecting after " + Slog.i(TAG, "Selected route timed out while connecting after " + (SystemClock.uptimeMillis() - mConnectionTimeoutStartTime) - + " ms: " + mGloballySelectedRouteRecord); + + " ms: " + mSelectedRouteRecord); break; } mConnectionTimeoutReason = 0; - unselectGloballySelectedRoute(); + unselectSelectedRoute(); } private void scheduleUpdateClientState() { @@ -985,30 +972,17 @@ public final class MediaRouterService extends IMediaRouterService.Stub private void updateClientState() { mClientStateUpdateScheduled = false; - final String globallySelectedRouteId = mGloballySelectedRouteRecord != null ? - mGloballySelectedRouteRecord.getUniqueId() : null; - // Build a new client state for trusted clients. - MediaRouterClientState trustedState = new MediaRouterClientState(); - trustedState.globallySelectedRouteId = globallySelectedRouteId; + MediaRouterClientState routerState = new MediaRouterClientState(); final int providerCount = mProviderRecords.size(); for (int i = 0; i < providerCount; i++) { - mProviderRecords.get(i).appendClientState(trustedState); - } - - // Build a new client state for untrusted clients that can only see - // the currently selected route. - MediaRouterClientState untrustedState = new MediaRouterClientState(); - untrustedState.globallySelectedRouteId = globallySelectedRouteId; - if (globallySelectedRouteId != null) { - untrustedState.routes.add(trustedState.getRoute(globallySelectedRouteId)); + mProviderRecords.get(i).appendClientState(routerState); } try { synchronized (mService.mLock) { // Update the UserRecord. - mUserRecord.mTrustedState = trustedState; - mUserRecord.mUntrustedState = untrustedState; + mUserRecord.mRouterState = routerState; // Collect all clients. final int count = mUserRecord.mClientRecords.size(); diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index b8d633fc666f..73a365b0da72 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -221,7 +221,9 @@ abstract public class ManagedServices { restoredSettingName(element), newValue, userid); - updateSettingsAccordingToInstalledServices(element, userid); + if (mConfig.secureSettingName.equals(element)) { + updateSettingsAccordingToInstalledServices(element, userid); + } rebuildRestoredPackages(); } } diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index 803b0dc0ee5e..95e1db7a3a4c 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -45,6 +45,7 @@ import android.util.Log; import android.util.Slog; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; +import android.widget.RemoteViews; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; @@ -359,8 +360,13 @@ public final class NotificationRecord { } } + String formatRemoteViews(RemoteViews rv) { + if (rv == null) return "null"; + return String.format("%s/0x%08x (%d bytes): %s", + rv.getPackage(), rv.getLayoutId(), rv.estimateMemoryUsage(), rv.toString()); + } + void dump(PrintWriter pw, String prefix, Context baseContext, boolean redact) { - prefix = prefix + " "; final Notification notification = sbn.getNotification(); final Icon icon = notification.getSmallIcon(); String iconStr = String.valueOf(icon); @@ -368,6 +374,7 @@ public final class NotificationRecord { iconStr += " / " + idDebugString(baseContext, icon.getResPackage(), icon.getResId()); } pw.println(prefix + this); + prefix = prefix + " "; pw.println(prefix + "uid=" + sbn.getUid() + " userId=" + sbn.getUserId()); pw.println(prefix + "icon=" + iconStr); pw.println(prefix + "pri=" + notification.priority); @@ -391,8 +398,11 @@ public final class NotificationRecord { } else { pw.println("null"); } - pw.println(prefix + "contentView=" + notification.contentView); - pw.println(prefix + String.format("color=0x%08x", notification.color)); + pw.println(prefix + "contentView=" + formatRemoteViews(notification.contentView)); + pw.println(prefix + "bigContentView=" + formatRemoteViews(notification.bigContentView)); + pw.println(prefix + "headsUpContentView=" + + formatRemoteViews(notification.headsUpContentView)); + pw.print(prefix + String.format("color=0x%08x", notification.color)); pw.println(prefix + "timeout=" + TimeUtils.formatForLogging(notification.getTimeoutAfter())); if (notification.actions != null && notification.actions.length > 0) { diff --git a/services/core/java/com/android/server/storage/FileCollector.java b/services/core/java/com/android/server/storage/FileCollector.java index 0c119a72e7f9..96e358402a97 100644 --- a/services/core/java/com/android/server/storage/FileCollector.java +++ b/services/core/java/com/android/server/storage/FileCollector.java @@ -203,7 +203,13 @@ public class FileCollector { return 0; } - final long sharedDataSize = shared.getPath().getTotalSpace(); + // In some cases, the path may be null -- we can't determine the size in this case. + final File sharedPath = shared.getPath(); + if (sharedPath == null) { + return 0; + } + + final long sharedDataSize = sharedPath.getTotalSpace(); long systemSize = sm.getPrimaryStorageSize() - sharedDataSize; // This case is not exceptional -- we just fallback to the shared data volume in this case. diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index a38addb1dad0..9d8f1241a7ae 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -52,6 +52,7 @@ import android.annotation.Nullable; import android.content.Context; import android.content.res.Configuration; import android.graphics.Bitmap; +import android.graphics.GraphicBuffer; import android.graphics.Path; import android.graphics.Rect; import android.os.Binder; @@ -346,12 +347,12 @@ public class AppTransition implements Dump { mAppTransitionState = APP_STATE_TIMEOUT; } - Bitmap getAppTransitionThumbnailHeader(int taskId) { + GraphicBuffer getAppTransitionThumbnailHeader(int taskId) { AppTransitionAnimationSpec spec = mNextAppTransitionAnimationsSpecs.get(taskId); if (spec == null) { spec = mDefaultNextAppTransitionAnimationSpec; } - return spec != null ? spec.bitmap : null; + return spec != null ? spec.buffer : null; } /** Returns whether the next thumbnail transition is aspect scaled up. */ @@ -716,9 +717,9 @@ public class AppTransition implements Dump { } private void putDefaultNextAppTransitionCoordinates(int left, int top, int width, int height, - Bitmap bitmap) { + GraphicBuffer buffer) { mDefaultNextAppTransitionAnimationSpec = new AppTransitionAnimationSpec(-1 /* taskId */, - bitmap, new Rect(left, top, left + width, top + height)); + buffer, new Rect(left, top, left + width, top + height)); } /** @@ -943,7 +944,7 @@ public class AppTransition implements Dump { * when a thumbnail is specified with the pending animation override. */ Animation createThumbnailAspectScaleAnimationLocked(Rect appRect, @Nullable Rect contentInsets, - Bitmap thumbnailHeader, final int taskId, int uiMode, int orientation) { + GraphicBuffer thumbnailHeader, final int taskId, int uiMode, int orientation) { Animation a; final int thumbWidthI = thumbnailHeader.getWidth(); final float thumbWidth = thumbWidthI > 0 ? thumbWidthI : 1; @@ -1296,7 +1297,7 @@ public class AppTransition implements Dump { * when a thumbnail is specified with the pending animation override. */ Animation createThumbnailScaleAnimationLocked(int appWidth, int appHeight, int transit, - Bitmap thumbnailHeader) { + GraphicBuffer thumbnailHeader) { Animation a; getDefaultNextAppTransitionStartRect(mTmpRect); final int thumbWidthI = thumbnailHeader.getWidth(); @@ -1341,7 +1342,7 @@ public class AppTransition implements Dump { int transit, int taskId) { final int appWidth = containingFrame.width(); final int appHeight = containingFrame.height(); - Bitmap thumbnailHeader = getAppTransitionThumbnailHeader(taskId); + final GraphicBuffer thumbnailHeader = getAppTransitionThumbnailHeader(taskId); Animation a; getDefaultNextAppTransitionStartRect(mTmpRect); final int thumbWidthI = thumbnailHeader != null ? thumbnailHeader.getWidth() : appWidth; @@ -1714,7 +1715,7 @@ public class AppTransition implements Dump { } } - void overridePendingAppTransitionThumb(Bitmap srcThumb, int startX, int startY, + void overridePendingAppTransitionThumb(GraphicBuffer srcThumb, int startX, int startY, IRemoteCallback startedCallback, boolean scaleUp) { if (isTransitionSet()) { clear(); @@ -1729,7 +1730,7 @@ public class AppTransition implements Dump { } } - void overridePendingAppTransitionAspectScaledThumb(Bitmap srcThumb, int startX, int startY, + void overridePendingAppTransitionAspectScaledThumb(GraphicBuffer srcThumb, int startX, int startY, int targetWidth, int targetHeight, IRemoteCallback startedCallback, boolean scaleUp) { if (isTransitionSet()) { clear(); @@ -1763,7 +1764,7 @@ public class AppTransition implements Dump { // to be set. Rect rect = spec.rect; putDefaultNextAppTransitionCoordinates(rect.left, rect.top, - rect.width(), rect.height(), spec.bitmap); + rect.width(), rect.height(), spec.buffer); } } } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index b2667781b955..1f7ef5014d36 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -31,6 +31,9 @@ import android.graphics.Rect; import android.os.Environment; import android.os.Handler; import android.util.ArraySet; +import android.view.DisplayListCanvas; +import android.view.RenderNode; +import android.view.ThreadedRenderer; import android.view.WindowManager.LayoutParams; import android.view.WindowManagerPolicy.ScreenOffListener; import android.view.WindowManagerPolicy.StartingSurface; @@ -238,19 +241,22 @@ class TaskSnapshotController { final int color = task.getTaskDescription().getBackgroundColor(); final int statusBarColor = task.getTaskDescription().getStatusBarColor(); final int navigationBarColor = task.getTaskDescription().getNavigationBarColor(); - final Bitmap b = Bitmap.createBitmap(mainWindow.getFrameLw().width(), - mainWindow.getFrameLw().height(), ARGB_8888); - final Canvas c = new Canvas(b); - c.drawColor(color); final LayoutParams attrs = mainWindow.getAttrs(); final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags, attrs.privateFlags, attrs.systemUiVisibility, statusBarColor, navigationBarColor); + final int width = mainWindow.getFrameLw().width(); + final int height = mainWindow.getFrameLw().height(); + + final RenderNode node = RenderNode.create("TaskSnapshotController", null); + node.setLeftTopRightBottom(0, 0, width, height); + node.setClipToBounds(false); + final DisplayListCanvas c = node.start(width, height); + c.drawColor(color); decorPainter.setInsets(mainWindow.mContentInsets, mainWindow.mStableInsets); decorPainter.drawDecors(c, null /* statusBarExcludeFrame */); + node.end(c); + final Bitmap hwBitmap = ThreadedRenderer.createHardwareBitmap(node, width, height); - // Flush writer. - c.setBitmap(null); - final Bitmap hwBitmap = b.copy(HARDWARE, false /* isMutable */); return new TaskSnapshot(hwBitmap.createGraphicBufferHandle(), topChild.getConfiguration().orientation, mainWindow.mStableInsets, false /* reduced */, 1.0f /* scale */); diff --git a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java index c080f344c186..4da9c060fc4d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java +++ b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java @@ -52,7 +52,7 @@ public class WindowManagerDebugConfig { static final boolean DEBUG_CONFIGURATION = false; static final boolean DEBUG_APP_TRANSITIONS = false; static final boolean DEBUG_STARTING_WINDOW_VERBOSE = false; - static final boolean DEBUG_STARTING_WINDOW = DEBUG_STARTING_WINDOW_VERBOSE || true; + static final boolean DEBUG_STARTING_WINDOW = DEBUG_STARTING_WINDOW_VERBOSE || false; static final boolean DEBUG_WALLPAPER = false; static final boolean DEBUG_WALLPAPER_LIGHT = false || DEBUG_WALLPAPER; static final boolean DEBUG_DRAG = false; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 3fa090554019..02fdfeeb365d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -123,6 +123,7 @@ import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.ContentObserver; import android.graphics.Bitmap; +import android.graphics.GraphicBuffer; import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.Point; @@ -2630,7 +2631,7 @@ public class WindowManagerService extends IWindowManager.Stub } @Override - public void overridePendingAppTransitionThumb(Bitmap srcThumb, int startX, + public void overridePendingAppTransitionThumb(GraphicBuffer srcThumb, int startX, int startY, IRemoteCallback startedCallback, boolean scaleUp) { synchronized(mWindowMap) { mAppTransition.overridePendingAppTransitionThumb(srcThumb, startX, startY, @@ -2639,7 +2640,7 @@ public class WindowManagerService extends IWindowManager.Stub } @Override - public void overridePendingAppTransitionAspectScaledThumb(Bitmap srcThumb, int startX, + public void overridePendingAppTransitionAspectScaledThumb(GraphicBuffer srcThumb, int startX, int startY, int targetWidth, int targetHeight, IRemoteCallback startedCallback, boolean scaleUp) { synchronized(mWindowMap) { @@ -3823,20 +3824,22 @@ public class WindowManagerService extends IWindowManager.Stub long origId = Binder.clearCallingIdentity(); try { - final boolean rotationChanged; // TODO(multi-display): Update rotation for different displays separately. - final DisplayContent displayContent = getDefaultDisplayContentLocked(); + final boolean rotationChanged; + final int displayId; synchronized (mWindowMap) { + final DisplayContent displayContent = getDefaultDisplayContentLocked(); rotationChanged = displayContent.updateRotationUnchecked( false /* inTransaction */); if (!rotationChanged || forceRelayout) { - getDefaultDisplayContentLocked().setLayoutNeeded(); + displayContent.setLayoutNeeded(); mWindowPlacerLocked.performSurfacePlacement(); } + displayId = displayContent.getDisplayId(); } if (rotationChanged || alwaysSendConfiguration) { - sendNewConfiguration(displayContent.getDisplayId()); + sendNewConfiguration(displayId); } } finally { Binder.restoreCallingIdentity(origId); @@ -6897,9 +6900,11 @@ public class WindowManagerService extends IWindowManager.Stub "registerDockedStackListener()")) { return; } - // TODO(multi-display): The listener is registered on the default display only. - getDefaultDisplayContentLocked().mDividerControllerLocked.registerDockedStackListener( - listener); + synchronized (mWindowMap) { + // TODO(multi-display): The listener is registered on the default display only. + getDefaultDisplayContentLocked().mDividerControllerLocked.registerDockedStackListener( + listener); + } } @Override diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index 4a1a7052a8b0..4442bb87ec33 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -38,8 +38,7 @@ import static com.android.server.wm.WindowManagerService.MAX_ANIMATION_DURATION; import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_PLACING_SURFACES; import android.content.res.Configuration; -import android.graphics.Bitmap; -import android.graphics.Canvas; +import android.graphics.GraphicBuffer; import android.graphics.PixelFormat; import android.graphics.Rect; import android.os.Binder; @@ -675,8 +674,9 @@ class WindowSurfacePlacer { return; } final int taskId = appToken.getTask().mTaskId; - Bitmap thumbnailHeader = mService.mAppTransition.getAppTransitionThumbnailHeader(taskId); - if (thumbnailHeader == null || thumbnailHeader.getConfig() == Bitmap.Config.ALPHA_8) { + final GraphicBuffer thumbnailHeader = + mService.mAppTransition.getAppTransitionThumbnailHeader(taskId); + if (thumbnailHeader == null) { if (DEBUG_APP_TRANSITIONS) Slog.d(TAG, "No thumbnail header bitmap for: " + taskId); return; } @@ -694,18 +694,17 @@ class WindowSurfacePlacer { SurfaceControl surfaceControl = new SurfaceControl(mService.mFxSession, "thumbnail anim", dirty.width(), dirty.height(), PixelFormat.TRANSLUCENT, SurfaceControl.HIDDEN, - appToken.windowType, window.mOwnerUid); + appToken.windowType, + window != null ? window.mOwnerUid : Binder.getCallingUid()); surfaceControl.setLayerStack(display.getLayerStack()); if (SHOW_TRANSACTIONS) { Slog.i(TAG, " THUMBNAIL " + surfaceControl + ": CREATE"); } - // Draw the thumbnail onto the surface + // Transfer the thumbnail to the surface Surface drawSurface = new Surface(); drawSurface.copyFrom(surfaceControl); - Canvas c = drawSurface.lockCanvas(dirty); - c.drawBitmap(thumbnailHeader, 0, 0, null); - drawSurface.unlockCanvasAndPost(c); + drawSurface.attachAndQueueBuffer(thumbnailHeader); drawSurface.release(); // Get the thumbnail animation diff --git a/telephony/java/android/telephony/MbmsDownloadManager.java b/telephony/java/android/telephony/MbmsDownloadManager.java index d9f8fa6b994c..a9ec299c4cd8 100644 --- a/telephony/java/android/telephony/MbmsDownloadManager.java +++ b/telephony/java/android/telephony/MbmsDownloadManager.java @@ -17,9 +17,10 @@ package android.telephony; import android.content.Context; +import android.content.Intent; import android.net.Uri; import android.os.RemoteException; -import android.telephony.mbms.DownloadCallback; +import android.telephony.mbms.IDownloadCallback; import android.telephony.mbms.DownloadRequest; import android.telephony.mbms.DownloadStatus; import android.telephony.mbms.IMbmsDownloadManagerCallback; @@ -242,8 +243,9 @@ public class MbmsDownloadManager { * * Asynchronous errors through the listener include any of the errors */ - public DownloadRequest download(DownloadRequest downloadRequest, DownloadCallback listener) { - return null; + public DownloadRequest download(DownloadRequest request, IDownloadCallback listener) { + request.setAppName(mDownloadAppName); + return request; } /** diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index 07259cf3c8d9..87054469c2f9 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -1449,6 +1449,11 @@ public class PhoneNumberUtils * @hide */ public static boolean isInternationalNumber(String phoneNumber, String defaultCountryIso) { + // If no phone number is provided, it can't be international. + if (TextUtils.isEmpty(phoneNumber)) { + return false; + } + // If it starts with # or * its not international. if (phoneNumber.startsWith("#") || phoneNumber.startsWith("*")) { return false; diff --git a/telephony/java/android/telephony/mbms/DownloadRequest.java b/telephony/java/android/telephony/mbms/DownloadRequest.java index dbaf10bb68eb..f3ca05840da2 100644 --- a/telephony/java/android/telephony/mbms/DownloadRequest.java +++ b/telephony/java/android/telephony/mbms/DownloadRequest.java @@ -21,6 +21,7 @@ import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; +import java.lang.IllegalStateException; import java.net.URISyntaxException; /** @@ -36,6 +37,7 @@ public class DownloadRequest implements Parcelable { private Uri dest; private int sub; private String appIntent; + private String appName; // not the Android app Name, the embms app Name public Builder setId(int id) { this.id = id; @@ -68,7 +70,7 @@ public class DownloadRequest implements Parcelable { } public DownloadRequest build() { - return new DownloadRequest(id, serviceInfo, source, dest, sub, appIntent); + return new DownloadRequest(id, serviceInfo, source, dest, sub, appIntent, appName); } } @@ -78,16 +80,18 @@ public class DownloadRequest implements Parcelable { private final Uri destinationUri; private final int subId; private final String serializedResultIntentForApp; + private String appName; // not the Android app Name, the embms app name private DownloadRequest(int id, FileServiceInfo serviceInfo, Uri source, Uri dest, - int sub, String appIntent) { + int sub, String appIntent, String name) { downloadId = id; fileServiceInfo = serviceInfo; sourceUri = source; destinationUri = dest; subId = sub; serializedResultIntentForApp = appIntent; + appName = name; } public static DownloadRequest copy(DownloadRequest other) { @@ -101,6 +105,7 @@ public class DownloadRequest implements Parcelable { destinationUri = dr.destinationUri; subId = dr.subId; serializedResultIntentForApp = dr.serializedResultIntentForApp; + appName = dr.appName; } private DownloadRequest(Parcel in) { @@ -110,6 +115,7 @@ public class DownloadRequest implements Parcelable { destinationUri = in.readParcelable(getClass().getClassLoader()); subId = in.readInt(); serializedResultIntentForApp = in.readString(); + appName = in.readString(); } public int describeContents() { @@ -123,6 +129,7 @@ public class DownloadRequest implements Parcelable { out.writeParcelable(destinationUri, flags); out.writeInt(subId); out.writeString(serializedResultIntentForApp); + out.writeString(appName); } public int getDownloadId() { @@ -153,6 +160,18 @@ public class DownloadRequest implements Parcelable { } } + /** @hide */ + public synchronized void setAppName(String newAppName) { + if (appName != null) { + throw new IllegalStateException("Attempting to reset appName"); + } + appName = newAppName; + } + + public String getAppName() { + return appName; + } + public static final Parcelable.Creator<DownloadRequest> CREATOR = new Parcelable.Creator<DownloadRequest>() { public DownloadRequest createFromParcel(Parcel in) { @@ -162,5 +181,4 @@ public class DownloadRequest implements Parcelable { return new DownloadRequest[size]; } }; - } diff --git a/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl b/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl index 3090e1275f54..6c2b8167d519 100755 --- a/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl +++ b/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl @@ -50,20 +50,20 @@ interface IMbmsDownloadService /** * should move the params into a DownloadRequest parcelable */ - int download(String appName, in DownloadRequest downloadRequest, IDownloadCallback listener); + int download(in DownloadRequest downloadRequest, IDownloadCallback listener); - List<DownloadRequest> listPendingDownloads(String appName); + List<DownloadRequest> listPendingDownloads(String appName, int subscriptionId); - int cancelDownload(String appName, in DownloadRequest downloadRequest); + int cancelDownload(in DownloadRequest downloadRequest); - DownloadStatus getDownloadStatus(String appName, in DownloadRequest downloadRequest); + DownloadStatus getDownloadStatus(in DownloadRequest downloadRequest); /* * named this for 2 reasons: * 1 don't want 'State' here as it conflicts with 'Status' of the previous function * 2 want to perfect typing 'Knowledge' */ - void resetDownloadKnowledge(String appName, in DownloadRequest downloadRequest); + void resetDownloadKnowledge(in DownloadRequest downloadRequest); /** * End of life for this MbmsDownloadManager. diff --git a/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java b/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java index 369aef1c2c68..505aeae15355 100644 --- a/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java +++ b/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java @@ -43,34 +43,34 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub { } @Override - public int download(String appName, DownloadRequest downloadRequest, IDownloadCallback listener) + public int download(DownloadRequest downloadRequest, IDownloadCallback listener) throws RemoteException { return 0; } @Override - public List<DownloadRequest> listPendingDownloads(String appName) throws RemoteException { + public List<DownloadRequest> listPendingDownloads(String appName, int subscriptionId) + throws RemoteException { return null; } @Override - public int cancelDownload(String appName, DownloadRequest downloadRequest) - throws RemoteException { + public int cancelDownload(DownloadRequest downloadRequest) throws RemoteException { return 0; } @Override - public DownloadStatus getDownloadStatus(String appName, DownloadRequest downloadRequest) + public DownloadStatus getDownloadStatus(DownloadRequest downloadRequest) throws RemoteException { return null; } @Override - public void resetDownloadKnowledge(String appName, DownloadRequest downloadRequest) + public void resetDownloadKnowledge(DownloadRequest downloadRequest) throws RemoteException { } @Override - public void dispose(String appName, int subId) throws RemoteException { + public void dispose(String appName, int subscriptionId) throws RemoteException { } } diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/tests/net/java/com/android/server/connectivity/TetheringTest.java index d5a0b864583a..241b828d8f4d 100644 --- a/tests/net/java/com/android/server/connectivity/TetheringTest.java +++ b/tests/net/java/com/android/server/connectivity/TetheringTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import android.content.BroadcastReceiver; +import android.content.ContentResolver; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; @@ -52,11 +53,14 @@ import android.os.PersistableBundle; import android.os.RemoteException; import android.os.test.TestLooper; import android.os.UserHandle; +import android.provider.Settings; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.telephony.CarrierConfigManager; +import android.test.mock.MockContentResolver; import com.android.internal.util.test.BroadcastInterceptingContext; +import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.connectivity.tethering.OffloadHardwareInterface; import com.android.server.connectivity.tethering.TetheringDependencies; @@ -96,6 +100,7 @@ public class TetheringTest { private Vector<Intent> mIntents; private BroadcastInterceptingContext mServiceContext; + private MockContentResolver mContentResolver; private BroadcastReceiver mBroadcastReceiver; private Tethering mTethering; @@ -105,6 +110,12 @@ public class TetheringTest { } @Override + public ContentResolver getContentResolver() { return mContentResolver; } + + @Override + public String getPackageName() { return "TetheringTest"; } + + @Override public Resources getResources() { return mResources; } @Override @@ -134,6 +145,8 @@ public class TetheringTest { .thenReturn(new InterfaceConfiguration()); mServiceContext = new MockContext(mContext); + mContentResolver = new MockContentResolver(mServiceContext); + mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); mIntents = new Vector<>(); mBroadcastReceiver = new BroadcastReceiver() { @Override diff --git a/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java b/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java new file mode 100644 index 000000000000..fb7971e1e104 --- /dev/null +++ b/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.connectivity.tethering; + +import static android.provider.Settings.Global.TETHER_OFFLOAD_DISABLED; +import static org.junit.Assert.fail; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.net.util.SharedLog; +import android.provider.Settings; +import android.provider.Settings.SettingNotFoundException; + +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; +import android.test.mock.MockContentResolver; +import com.android.internal.util.test.FakeSettingsProvider; + +import org.junit.Before; +import org.junit.runner.RunWith; +import org.junit.Test; +import org.mockito.InOrder; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class OffloadControllerTest { + + @Mock private OffloadHardwareInterface mHardware; + @Mock private Context mContext; + private MockContentResolver mContentResolver; + + @Before public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + mContentResolver = new MockContentResolver(mContext); + mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); + when(mContext.getPackageName()).thenReturn("OffloadControllerTest"); + when(mContext.getContentResolver()).thenReturn(mContentResolver); + } + + private void setupFunctioningHardwareInterface() { + when(mHardware.initOffloadConfig()).thenReturn(true); + when(mHardware.initOffloadControl(any(OffloadHardwareInterface.ControlCallback.class))) + .thenReturn(true); + } + + @Test + public void testNoSettingsValueAllowsStart() { + setupFunctioningHardwareInterface(); + try { + Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); + fail(); + } catch (SettingNotFoundException expected) {} + + final OffloadController offload = + new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); + offload.start(); + + final InOrder inOrder = inOrder(mHardware); + inOrder.verify(mHardware, times(1)).initOffloadConfig(); + inOrder.verify(mHardware, times(1)).initOffloadControl( + any(OffloadHardwareInterface.ControlCallback.class)); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testSettingsAllowsStart() { + setupFunctioningHardwareInterface(); + Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0); + + final OffloadController offload = + new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); + offload.start(); + + final InOrder inOrder = inOrder(mHardware); + inOrder.verify(mHardware, times(1)).initOffloadConfig(); + inOrder.verify(mHardware, times(1)).initOffloadControl( + any(OffloadHardwareInterface.ControlCallback.class)); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testSettingsDisablesStart() { + setupFunctioningHardwareInterface(); + Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 1); + + final OffloadController offload = + new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); + offload.start(); + + final InOrder inOrder = inOrder(mHardware); + inOrder.verify(mHardware, never()).initOffloadConfig(); + inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); + inOrder.verifyNoMoreInteractions(); + } +} diff --git a/tools/aapt2/Android.bp b/tools/aapt2/Android.bp index bf189492b082..064d86411463 100644 --- a/tools/aapt2/Android.bp +++ b/tools/aapt2/Android.bp @@ -84,6 +84,7 @@ cc_library_host_static { "compile/PseudolocaleGenerator.cpp", "compile/Pseudolocalizer.cpp", "compile/XmlIdCollector.cpp", + "configuration/ConfigurationParser.cpp", "filter/ConfigFilter.cpp", "flatten/Archive.cpp", "flatten/TableFlattener.cpp", @@ -160,7 +161,10 @@ cc_library_host_shared { cc_test_host { name: "aapt2_tests", srcs: ["**/*_test.cpp"], - static_libs: ["libaapt2"], + static_libs: [ + "libaapt2", + "libgmock", + ], defaults: ["aapt_defaults"], } diff --git a/tools/aapt2/ResourceUtils.cpp b/tools/aapt2/ResourceUtils.cpp index 1bb7d9beee45..818c8cec30f9 100644 --- a/tools/aapt2/ResourceUtils.cpp +++ b/tools/aapt2/ResourceUtils.cpp @@ -496,19 +496,17 @@ Maybe<int> ParseSdkVersion(const StringPiece& str) { std::unique_ptr<BinaryPrimitive> TryParseBool(const StringPiece& str) { if (Maybe<bool> maybe_result = ParseBool(str)) { - android::Res_value value = {}; - value.dataType = android::Res_value::TYPE_INT_BOOLEAN; - - if (maybe_result.value()) { - value.data = 0xffffffffu; - } else { - value.data = 0; - } - return util::make_unique<BinaryPrimitive>(value); + const uint32_t data = maybe_result.value() ? 0xffffffffu : 0u; + return util::make_unique<BinaryPrimitive>(android::Res_value::TYPE_INT_BOOLEAN, data); } return {}; } +std::unique_ptr<BinaryPrimitive> MakeBool(bool val) { + return util::make_unique<BinaryPrimitive>(android::Res_value::TYPE_INT_BOOLEAN, + val ? 0xffffffffu : 0u); +} + std::unique_ptr<BinaryPrimitive> TryParseInt(const StringPiece& str) { std::u16string str16 = util::Utf8ToUtf16(str); android::Res_value value; diff --git a/tools/aapt2/ResourceUtils.h b/tools/aapt2/ResourceUtils.h index 48922b72fefa..da0fc8ee314a 100644 --- a/tools/aapt2/ResourceUtils.h +++ b/tools/aapt2/ResourceUtils.h @@ -147,6 +147,9 @@ std::unique_ptr<BinaryPrimitive> TryParseColor(const android::StringPiece& str); */ std::unique_ptr<BinaryPrimitive> TryParseBool(const android::StringPiece& str); +// Returns a boolean BinaryPrimitive. +std::unique_ptr<BinaryPrimitive> MakeBool(bool val); + /* * Returns a BinaryPrimitve object representing an integer if the string was * parsed as one. diff --git a/tools/aapt2/ResourceValues.cpp b/tools/aapt2/ResourceValues.cpp index 34bd2b4361ca..abfdec48df67 100644 --- a/tools/aapt2/ResourceValues.cpp +++ b/tools/aapt2/ResourceValues.cpp @@ -29,6 +29,11 @@ namespace aapt { +std::ostream& operator<<(std::ostream& out, const Value& value) { + value.Print(&out); + return out; +} + template <typename Derived> void BaseValue<Derived>::Accept(RawValueVisitor* visitor) { visitor->Visit(static_cast<Derived*>(this)); @@ -346,6 +351,15 @@ Attribute::Attribute(bool w, uint32_t t) weak_ = w; } +std::ostream& operator<<(std::ostream& out, const Attribute::Symbol& s) { + if (s.symbol.name) { + out << s.symbol.name.value().entry; + } else { + out << "???"; + } + return out << "=" << s.value; +} + template <typename T> constexpr T* add_pointer(T& val) { return &val; @@ -361,31 +375,27 @@ bool Attribute::Equals(const Value* value) const { return false; } - if (type_mask != other->type_mask || min_int != other->min_int || - max_int != other->max_int) { + if (type_mask != other->type_mask || min_int != other->min_int || max_int != other->max_int) { return false; } std::vector<const Symbol*> sorted_a; std::transform(symbols.begin(), symbols.end(), std::back_inserter(sorted_a), add_pointer<const Symbol>); - std::sort(sorted_a.begin(), sorted_a.end(), - [](const Symbol* a, const Symbol* b) -> bool { - return a->symbol.name < b->symbol.name; - }); + std::sort(sorted_a.begin(), sorted_a.end(), [](const Symbol* a, const Symbol* b) -> bool { + return a->symbol.name < b->symbol.name; + }); std::vector<const Symbol*> sorted_b; - std::transform(other->symbols.begin(), other->symbols.end(), - std::back_inserter(sorted_b), add_pointer<const Symbol>); - std::sort(sorted_b.begin(), sorted_b.end(), - [](const Symbol* a, const Symbol* b) -> bool { - return a->symbol.name < b->symbol.name; - }); + std::transform(other->symbols.begin(), other->symbols.end(), std::back_inserter(sorted_b), + add_pointer<const Symbol>); + std::sort(sorted_b.begin(), sorted_b.end(), [](const Symbol* a, const Symbol* b) -> bool { + return a->symbol.name < b->symbol.name; + }); return std::equal(sorted_a.begin(), sorted_a.end(), sorted_b.begin(), [](const Symbol* a, const Symbol* b) -> bool { - return a->symbol.Equals(&b->symbol) && - a->value == b->value; + return a->symbol.Equals(&b->symbol) && a->value == b->value; }); } @@ -588,14 +598,50 @@ bool Attribute::Matches(const Item* item, DiagMessage* out_msg) const { return true; } +std::ostream& operator<<(std::ostream& out, const Style::Entry& entry) { + if (entry.key.name) { + out << entry.key.name.value(); + } else if (entry.key.id) { + out << entry.key.id.value(); + } else { + out << "???"; + } + out << " = " << entry.value; + return out; +} + +template <typename T> +std::vector<T*> ToPointerVec(std::vector<T>& src) { + std::vector<T*> dst; + dst.reserve(src.size()); + for (T& in : src) { + dst.push_back(&in); + } + return dst; +} + +template <typename T> +std::vector<const T*> ToPointerVec(const std::vector<T>& src) { + std::vector<const T*> dst; + dst.reserve(src.size()); + for (const T& in : src) { + dst.push_back(&in); + } + return dst; +} + +static bool KeyNameComparator(const Style::Entry* a, const Style::Entry* b) { + return a->key.name < b->key.name; +} + bool Style::Equals(const Value* value) const { const Style* other = ValueCast<Style>(value); if (!other) { return false; } + if (bool(parent) != bool(other->parent) || - (parent && other->parent && - !parent.value().Equals(&other->parent.value()))) { + (parent && other->parent && !parent.value().Equals(&other->parent.value()))) { return false; } @@ -603,26 +649,15 @@ bool Style::Equals(const Value* value) const { return false; } - std::vector<const Entry*> sorted_a; - std::transform(entries.begin(), entries.end(), std::back_inserter(sorted_a), - add_pointer<const Entry>); - std::sort(sorted_a.begin(), sorted_a.end(), - [](const Entry* a, const Entry* b) -> bool { - return a->key.name < b->key.name; - }); + std::vector<const Entry*> sorted_a = ToPointerVec(entries); + std::sort(sorted_a.begin(), sorted_a.end(), KeyNameComparator); - std::vector<const Entry*> sorted_b; - std::transform(other->entries.begin(), other->entries.end(), - std::back_inserter(sorted_b), add_pointer<const Entry>); - std::sort(sorted_b.begin(), sorted_b.end(), - [](const Entry* a, const Entry* b) -> bool { - return a->key.name < b->key.name; - }); + std::vector<const Entry*> sorted_b = ToPointerVec(other->entries); + std::sort(sorted_b.begin(), sorted_b.end(), KeyNameComparator); return std::equal(sorted_a.begin(), sorted_a.end(), sorted_b.begin(), [](const Entry* a, const Entry* b) -> bool { - return a->key.Equals(&b->key) && - a->value->Equals(b->value.get()); + return a->key.Equals(&b->key) && a->value->Equals(b->value.get()); }); } @@ -633,8 +668,7 @@ Style* Style::Clone(StringPool* new_pool) const { style->comment_ = comment_; style->source_ = source_; for (auto& entry : entries) { - style->entries.push_back( - Entry{entry.key, std::unique_ptr<Item>(entry.value->Clone(new_pool))}); + style->entries.push_back(Entry{entry.key, std::unique_ptr<Item>(entry.value->Clone(new_pool))}); } return style; } @@ -642,26 +676,73 @@ Style* Style::Clone(StringPool* new_pool) const { void Style::Print(std::ostream* out) const { *out << "(style) "; if (parent && parent.value().name) { - if (parent.value().private_reference) { + const Reference& parent_ref = parent.value(); + if (parent_ref.private_reference) { *out << "*"; } - *out << parent.value().name.value(); + *out << parent_ref.name.value(); } *out << " [" << util::Joiner(entries, ", ") << "]"; } -static ::std::ostream& operator<<(::std::ostream& out, - const Style::Entry& value) { - if (value.key.name) { - out << value.key.name.value(); - } else if (value.key.id) { - out << value.key.id.value(); - } else { - out << "???"; +Style::Entry CloneEntry(const Style::Entry& entry, StringPool* pool) { + Style::Entry cloned_entry{entry.key}; + if (entry.value != nullptr) { + cloned_entry.value.reset(entry.value->Clone(pool)); } - out << " = "; - value.value->Print(&out); - return out; + return cloned_entry; +} + +void Style::MergeWith(Style* other, StringPool* pool) { + if (other->parent) { + parent = other->parent; + } + + // We can't assume that the entries are sorted alphabetically since they're supposed to be + // sorted by Resource Id. Not all Resource Ids may be set though, so we can't sort and merge + // them keying off that. + // + // Instead, sort the entries of each Style by their name in a separate structure. Then merge + // those. + + std::vector<Entry*> this_sorted = ToPointerVec(entries); + std::sort(this_sorted.begin(), this_sorted.end(), KeyNameComparator); + + std::vector<Entry*> other_sorted = ToPointerVec(other->entries); + std::sort(other_sorted.begin(), other_sorted.end(), KeyNameComparator); + + auto this_iter = this_sorted.begin(); + const auto this_end = this_sorted.end(); + + auto other_iter = other_sorted.begin(); + const auto other_end = other_sorted.end(); + + std::vector<Entry> merged_entries; + while (this_iter != this_end) { + if (other_iter != other_end) { + if ((*this_iter)->key.name < (*other_iter)->key.name) { + merged_entries.push_back(std::move(**this_iter)); + ++this_iter; + } else { + // The other overrides. + merged_entries.push_back(CloneEntry(**other_iter, pool)); + if ((*this_iter)->key.name == (*other_iter)->key.name) { + ++this_iter; + } + ++other_iter; + } + } else { + merged_entries.push_back(std::move(**this_iter)); + ++this_iter; + } + } + + while (other_iter != other_end) { + merged_entries.push_back(CloneEntry(**other_iter, pool)); + ++other_iter; + } + + entries = std::move(merged_entries); } bool Array::Equals(const Value* value) const { @@ -758,11 +839,6 @@ void Plural::Print(std::ostream* out) const { } } -static ::std::ostream& operator<<(::std::ostream& out, - const std::unique_ptr<Item>& item) { - return out << *item; -} - bool Styleable::Equals(const Value* value) const { const Styleable* other = ValueCast<Styleable>(value); if (!other) { @@ -810,8 +886,7 @@ struct NameOnlyComparator { void Styleable::MergeWith(Styleable* other) { // Compare only names, because some References may already have their IDs - // assigned - // (framework IDs that don't change). + // assigned (framework IDs that don't change). std::set<Reference, NameOnlyComparator> references; references.insert(entries.begin(), entries.end()); references.insert(other->entries.begin(), other->entries.end()); diff --git a/tools/aapt2/ResourceValues.h b/tools/aapt2/ResourceValues.h index 06f949f9555c..ac5795fb9774 100644 --- a/tools/aapt2/ResourceValues.h +++ b/tools/aapt2/ResourceValues.h @@ -40,7 +40,8 @@ struct RawValueVisitor; // type specific operations is to check the Value's type() and // cast it to the appropriate subclass. This isn't super clean, // but it is the simplest strategy. -struct Value { +class Value { + public: virtual ~Value() = default; // Whether this value is weak and can be overridden without warning or error. Default is false. @@ -82,6 +83,8 @@ struct Value { // Human readable printout of this value. virtual void Print(std::ostream* out) const = 0; + friend std::ostream& operator<<(std::ostream& out, const Value& value); + protected: Source source_; std::string comment_; @@ -245,6 +248,8 @@ struct Attribute : public BaseValue<Attribute> { struct Symbol { Reference symbol; uint32_t value; + + friend std::ostream& operator<<(std::ostream& out, const Symbol& symbol); }; uint32_t type_mask; @@ -266,6 +271,8 @@ struct Style : public BaseValue<Style> { struct Entry { Reference key; std::unique_ptr<Item> value; + + friend std::ostream& operator<<(std::ostream& out, const Entry& entry); }; Maybe<Reference> parent; @@ -278,6 +285,10 @@ struct Style : public BaseValue<Style> { bool Equals(const Value* value) const override; Style* Clone(StringPool* new_pool) const override; void Print(std::ostream* out) const override; + + // Merges `style` into this Style. All identical attributes of `style` take precedence, including + // the parent, if there is one. + void MergeWith(Style* style, StringPool* pool); }; struct Array : public BaseValue<Array> { @@ -307,20 +318,15 @@ struct Styleable : public BaseValue<Styleable> { void MergeWith(Styleable* styleable); }; -// Stream operator for printing Value objects. -inline ::std::ostream& operator<<(::std::ostream& out, const Value& value) { - value.Print(&out); - return out; -} - -inline ::std::ostream& operator<<(::std::ostream& out, - const Attribute::Symbol& s) { - if (s.symbol.name) { - out << s.symbol.name.value().entry; +template <typename T> +typename std::enable_if<std::is_base_of<Value, T>::value, std::ostream&>::type operator<<( + std::ostream& out, const std::unique_ptr<T>& value) { + if (value == nullptr) { + out << "NULL"; } else { - out << "???"; + value->Print(&out); } - return out << "=" << s.value; + return out; } } // namespace aapt diff --git a/tools/aapt2/ResourceValues_test.cpp b/tools/aapt2/ResourceValues_test.cpp index 692258003471..e154d93b6f85 100644 --- a/tools/aapt2/ResourceValues_test.cpp +++ b/tools/aapt2/ResourceValues_test.cpp @@ -148,4 +148,36 @@ TEST(ResourceValuesTest, StyleClone) { EXPECT_TRUE(a->Equals(b.get())); } +TEST(ResourceValuesTest, StyleMerges) { + StringPool pool_a; + StringPool pool_b; + + std::unique_ptr<Style> a = + test::StyleBuilder() + .SetParent("android:style/Parent") + .AddItem("android:attr/a", util::make_unique<String>(pool_a.MakeRef("FooA"))) + .AddItem("android:attr/b", util::make_unique<String>(pool_a.MakeRef("FooB"))) + .Build(); + + std::unique_ptr<Style> b = + test::StyleBuilder() + .SetParent("android:style/OverlayParent") + .AddItem("android:attr/c", util::make_unique<String>(pool_b.MakeRef("OverlayFooC"))) + .AddItem("android:attr/a", util::make_unique<String>(pool_b.MakeRef("OverlayFooA"))) + .Build(); + + a->MergeWith(b.get(), &pool_a); + + StringPool pool; + std::unique_ptr<Style> expected = + test::StyleBuilder() + .SetParent("android:style/OverlayParent") + .AddItem("android:attr/a", util::make_unique<String>(pool.MakeRef("OverlayFooA"))) + .AddItem("android:attr/b", util::make_unique<String>(pool.MakeRef("FooB"))) + .AddItem("android:attr/c", util::make_unique<String>(pool.MakeRef("OverlayFooC"))) + .Build(); + + EXPECT_TRUE(a->Equals(expected.get())); +} + } // namespace aapt diff --git a/tools/aapt2/cmd/Link.cpp b/tools/aapt2/cmd/Link.cpp index dd4b2ba9ff16..740a401f9b57 100644 --- a/tools/aapt2/cmd/Link.cpp +++ b/tools/aapt2/cmd/Link.cpp @@ -440,7 +440,8 @@ static bool IsTransitionElement(const std::string& name) { } static bool IsVectorElement(const std::string& name) { - return name == "vector" || name == "animated-vector"; + return name == "vector" || name == "animated-vector" || name == "pathInterpolator" || + name == "objectAnimator"; } template <typename T> diff --git a/tools/aapt2/configuration/ConfigurationParser.cpp b/tools/aapt2/configuration/ConfigurationParser.cpp new file mode 100644 index 000000000000..89618d3a4676 --- /dev/null +++ b/tools/aapt2/configuration/ConfigurationParser.cpp @@ -0,0 +1,432 @@ +/* + * Copyright (C) 2017 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. + */ + +#include "configuration/ConfigurationParser.h" + +#include <algorithm> +#include <functional> +#include <memory> +#include <utility> + +#include <android-base/logging.h> + +#include "ConfigDescription.h" +#include "Diagnostics.h" +#include "util/Util.h" +#include "xml/XmlActionExecutor.h" +#include "xml/XmlDom.h" +#include "xml/XmlUtil.h" + +namespace aapt { + +namespace { + +using ::aapt::configuration::Abi; +using ::aapt::configuration::AndroidManifest; +using ::aapt::configuration::AndroidSdk; +using ::aapt::configuration::Artifact; +using ::aapt::configuration::Configuration; +using ::aapt::configuration::GlTexture; +using ::aapt::configuration::Group; +using ::aapt::configuration::Locale; +using ::aapt::util::TrimWhitespace; +using ::aapt::xml::Element; +using ::aapt::xml::FindRootElement; +using ::aapt::xml::NodeCast; +using ::aapt::xml::XmlActionExecutor; +using ::aapt::xml::XmlActionExecutorPolicy; +using ::aapt::xml::XmlNodeAction; + +const std::unordered_map<std::string, Abi> kAbiMap = { + {"armeabi", Abi::kArmeV6}, + {"armeabi-v7a", Abi::kArmV7a}, + {"arm64-v8a", Abi::kArm64V8a}, + {"x86", Abi::kX86}, + {"x86_64", Abi::kX86_64}, + {"mips", Abi::kMips}, + {"mips64", Abi::kMips64}, + {"universal", Abi::kUniversal}, +}; + +constexpr const char* kAaptXmlNs = "http://schemas.android.com/tools/aapt"; + +/** A default noop diagnostics context. */ +class NoopDiagnostics : public IDiagnostics { + public: + void Log(Level level, DiagMessageActual& actualMsg) override {} +}; +NoopDiagnostics noop_; + +std::string GetLabel(const Element* element, IDiagnostics* diag) { + std::string label; + for (const auto& attr : element->attributes) { + if (attr.name == "label") { + label = attr.value; + break; + } + } + + if (label.empty()) { + diag->Error(DiagMessage() << "No label found for element " << element->name); + } + return label; +} + +/** XML node visitor that removes all of the namespace URIs from the node and all children. */ +class NamespaceVisitor : public xml::Visitor { + public: + void Visit(xml::Element* node) override { + node->namespace_uri.clear(); + VisitChildren(node); + } +}; + +} // namespace + +ConfigurationParser::ConfigurationParser(std::string contents) + : contents_(std::move(contents)), + diag_(&noop_) { +} + +Maybe<Configuration> ConfigurationParser::Parse() { + std::istringstream in(contents_); + + auto doc = xml::Inflate(&in, diag_, Source("config.xml")); + if (!doc) { + return {}; + } + + // Strip any namespaces from the XML as the XmlActionExecutor ignores anything with a namespace. + auto* root = FindRootElement(doc.get()); + if (root == nullptr) { + diag_->Error(DiagMessage() << "Could not find the root element in the XML document"); + return {}; + } + + std::string& xml_ns = root->namespace_uri; + if (!xml_ns.empty()) { + if (xml_ns != kAaptXmlNs) { + diag_->Error(DiagMessage() << "Unknown namespace found on root element: " << xml_ns); + return {}; + } + + xml_ns.clear(); + NamespaceVisitor visitor; + root->Accept(&visitor); + } + + XmlActionExecutor executor; + XmlNodeAction& root_action = executor["post-process"]; + XmlNodeAction& artifacts_action = root_action["artifacts"]; + XmlNodeAction& groups_action = root_action["groups"]; + + Configuration config; + + // Helper to bind a static method to an action handler in the DOM executor. + auto bind_handler = [&config](std::function<bool(Configuration*, Element*, IDiagnostics*)> h) + -> XmlNodeAction::ActionFuncWithDiag { + return std::bind(h, &config, std::placeholders::_1, std::placeholders::_2); + }; + + // Parse the artifact elements. + artifacts_action["artifact"].Action(bind_handler(artifact_handler_)); + artifacts_action["artifact-format"].Action(bind_handler(artifact_format_handler_)); + + // Parse the different configuration groups. + groups_action["abi-group"].Action(bind_handler(abi_group_handler_)); + groups_action["screen-density-group"].Action(bind_handler(screen_density_group_handler_)); + groups_action["locale-group"].Action(bind_handler(locale_group_handler_)); + groups_action["android-sdk-group"].Action(bind_handler(android_sdk_group_handler_)); + groups_action["gl-texture-group"].Action(bind_handler(gl_texture_group_handler_)); + groups_action["device-feature-group"].Action(bind_handler(device_feature_group_handler_)); + + if (!executor.Execute(XmlActionExecutorPolicy::kNone, diag_, doc.get())) { + diag_->Error(DiagMessage() << "Could not process XML document"); + return {}; + } + + return {config}; +} + +ConfigurationParser::ActionHandler ConfigurationParser::artifact_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + Artifact artifact{}; + for (const auto& attr : root_element->attributes) { + if (attr.name == "name") { + artifact.name = attr.value; + } else if (attr.name == "abi-group") { + artifact.abi_group = {attr.value}; + } else if (attr.name == "screen-density-group") { + artifact.screen_density_group = {attr.value}; + } else if (attr.name == "locale-group") { + artifact.locale_group = {attr.value}; + } else if (attr.name == "android-sdk-group") { + artifact.android_sdk_group = {attr.value}; + } else if (attr.name == "gl-texture-group") { + artifact.gl_texture_group = {attr.value}; + } else if (attr.name == "device-feature-group") { + artifact.device_feature_group = {attr.value}; + } else { + diag->Note( + DiagMessage() << "Unknown artifact attribute: " << attr.name << " = " << attr.value); + } + } + config->artifacts[artifact.name] = artifact; + return true; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::artifact_format_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + for (auto& node : root_element->children) { + xml::Text* t; + if ((t = NodeCast<xml::Text>(node.get())) != nullptr) { + config->artifact_format = TrimWhitespace(t->text).to_string(); + break; + } + } + return true; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::abi_group_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + std::string label = GetLabel(root_element, diag); + if (label.empty()) { + return false; + } + + auto& group = config->abi_groups[label]; + bool valid = true; + + for (auto* child : root_element->GetChildElements()) { + if (child->name != "abi") { + diag->Error( + DiagMessage() << "Unexpected element in ABI group: " << child->name); + valid = false; + } else { + for (auto& node : child->children) { + xml::Text* t; + if ((t = NodeCast<xml::Text>(node.get())) != nullptr) { + group.push_back(kAbiMap.at(TrimWhitespace(t->text).to_string())); + break; + } + } + } + } + + return valid; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::screen_density_group_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + std::string label = GetLabel(root_element, diag); + if (label.empty()) { + return false; + } + + auto& group = config->screen_density_groups[label]; + bool valid = true; + + for (auto* child : root_element->GetChildElements()) { + if (child->name != "screen-density") { + diag->Error( + DiagMessage() << "Unexpected root_element in screen density group: " + << child->name); + valid = false; + } else { + for (auto& node : child->children) { + xml::Text* t; + if ((t = NodeCast<xml::Text>(node.get())) != nullptr) { + ConfigDescription config_descriptor; + const android::StringPiece& text = TrimWhitespace(t->text); + if (ConfigDescription::Parse(text, &config_descriptor)) { + // Copy the density with the minimum SDK version stripped out. + group.push_back(config_descriptor.CopyWithoutSdkVersion()); + } else { + diag->Error( + DiagMessage() << "Could not parse config descriptor for screen-density: " + << text); + valid = false; + } + break; + } + } + } + } + + return valid; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::locale_group_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + std::string label = GetLabel(root_element, diag); + if (label.empty()) { + return false; + } + + auto& group = config->locale_groups[label]; + bool valid = true; + + for (auto* child : root_element->GetChildElements()) { + if (child->name != "locale") { + diag->Error( + DiagMessage() << "Unexpected root_element in screen density group: " + << child->name); + valid = false; + } else { + Locale entry; + for (const auto& attr : child->attributes) { + if (attr.name == "lang") { + entry.lang = {attr.value}; + } else if (attr.name == "region") { + entry.region = {attr.value}; + } else { + diag->Warn(DiagMessage() << "Unknown attribute: " << attr.name + << " = " << attr.value); + } + } + group.push_back(entry); + } + } + + return valid; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::android_sdk_group_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + std::string label = GetLabel(root_element, diag); + if (label.empty()) { + return false; + } + + auto& group = config->android_sdk_groups[label]; + bool valid = true; + + for (auto* child : root_element->GetChildElements()) { + if (child->name != "android-sdk") { + diag->Error( + DiagMessage() << "Unexpected root_element in ABI group: " << child->name); + valid = false; + } else { + AndroidSdk entry; + for (const auto& attr : child->attributes) { + if (attr.name == "minSdkVersion") { + entry.min_sdk_version = {attr.value}; + } else if (attr.name == "targetSdkVersion") { + entry.target_sdk_version = {attr.value}; + } else if (attr.name == "maxSdkVersion") { + entry.max_sdk_version = {attr.value}; + } else { + diag->Warn(DiagMessage() << "Unknown attribute: " << attr.name + << " = " << attr.value); + } + } + + // TODO: Fill in the manifest details when they are finalised. + for (auto node : child->GetChildElements()) { + if (node->name == "manifest") { + if (entry.manifest) { + diag->Warn(DiagMessage() << "Found multiple manifest tags. Ignoring duplicates."); + continue; + } + entry.manifest = {AndroidManifest()}; + } + } + + group.push_back(entry); + } + } + + return valid; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::gl_texture_group_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + std::string label = GetLabel(root_element, diag); + if (label.empty()) { + return false; + } + + auto& group = config->gl_texture_groups[label]; + bool valid = true; + + GlTexture result; + for (auto* child : root_element->GetChildElements()) { + if (child->name != "gl-texture") { + diag->Error( + DiagMessage() << "Unexpected element in GL texture group: " + << child->name); + valid = false; + } else { + for (const auto& attr : child->attributes) { + if (attr.name == "name") { + result.name = attr.value; + break; + } + } + + for (auto* element : child->GetChildElements()) { + if (element->name != "texture-path") { + diag->Error( + DiagMessage() << "Unexpected element in gl-texture element: " + << child->name); + valid = false; + continue; + } + for (auto& node : element->children) { + xml::Text* t; + if ((t = NodeCast<xml::Text>(node.get())) != nullptr) { + result.texture_paths.push_back(TrimWhitespace(t->text).to_string()); + } + } + } + } + group.push_back(result); + } + + return valid; + }; + +ConfigurationParser::ActionHandler ConfigurationParser::device_feature_group_handler_ = + [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool { + std::string label = GetLabel(root_element, diag); + if (label.empty()) { + return false; + } + + auto& group = config->device_feature_groups[label]; + bool valid = true; + + for (auto* child : root_element->GetChildElements()) { + if (child->name != "supports-feature") { + diag->Error( + DiagMessage() << "Unexpected root_element in device feature group: " + << child->name); + valid = false; + } else { + for (auto& node : child->children) { + xml::Text* t; + if ((t = NodeCast<xml::Text>(node.get())) != nullptr) { + group.push_back(TrimWhitespace(t->text).to_string()); + break; + } + } + } + } + + return valid; + }; + +} // namespace aapt diff --git a/tools/aapt2/configuration/ConfigurationParser.h b/tools/aapt2/configuration/ConfigurationParser.h new file mode 100644 index 000000000000..0fb2f714a76c --- /dev/null +++ b/tools/aapt2/configuration/ConfigurationParser.h @@ -0,0 +1,216 @@ +/* + * Copyright (C) 2017 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. + */ + +#ifndef AAPT2_CONFIGURATION_H +#define AAPT2_CONFIGURATION_H + +#include <string> +#include <unordered_map> +#include <vector> +#include <ConfigDescription.h> + +#include "util/Maybe.h" + +namespace aapt { + +namespace configuration { + +/** A mapping of group labels to group of configuration items. */ +template<class T> +using Group = std::unordered_map<std::string, std::vector<T>>; + +/** Output artifact configuration options. */ +struct Artifact { + /** Name to use for output of processing foo.apk -> foo.<name>.apk. */ + std::string name; + /** If present, uses the ABI group with this name. */ + Maybe<std::string> abi_group; + /** If present, uses the screen density group with this name. */ + Maybe<std::string> screen_density_group; + /** If present, uses the locale group with this name. */ + Maybe<std::string> locale_group; + /** If present, uses the Android SDK group with this name. */ + Maybe<std::string> android_sdk_group; + /** If present, uses the device feature group with this name. */ + Maybe<std::string> device_feature_group; + /** If present, uses the OpenGL texture group with this name. */ + Maybe<std::string> gl_texture_group; +}; + +/** Enumeration of currently supported ABIs. */ +enum class Abi { + kArmeV6, + kArmV7a, + kArm64V8a, + kX86, + kX86_64, + kMips, + kMips64, + kUniversal +}; + +/** + * Represents an individual locale. When a locale is included, it must be + * declared from least specific to most specific, as a region does not make + * sense without a language. If neither the language or region are specified it + * acts as a special case for catch all. This can allow all locales to be kept, + * or compressed. + */ +struct Locale { + /** The ISO<?> standard locale language code. */ + Maybe<std::string> lang; + /** The ISO<?> standard locale region code. */ + Maybe<std::string> region; + + inline friend bool operator==(const Locale& lhs, const Locale& rhs) { + return lhs.lang == rhs.lang && lhs.region == rhs.region; + } +}; + +// TODO: Encapsulate manifest modifications from the configuration file. +struct AndroidManifest { + inline friend bool operator==(const AndroidManifest& lhs, const AndroidManifest& rhs) { + return true; // nothing to compare yet. + } +}; + +struct AndroidSdk { + Maybe<std::string> min_sdk_version; + Maybe<std::string> target_sdk_version; + Maybe<std::string> max_sdk_version; + Maybe<AndroidManifest> manifest; + + inline friend bool operator==(const AndroidSdk& lhs, const AndroidSdk& rhs) { + return lhs.min_sdk_version == rhs.min_sdk_version && + lhs.target_sdk_version == rhs.target_sdk_version && + lhs.max_sdk_version == rhs.max_sdk_version && + lhs.manifest == rhs.manifest; + } +}; + +// TODO: Make device features more than just an arbitrary string? +using DeviceFeature = std::string; + +/** Represents a mapping of texture paths to a GL texture format. */ +struct GlTexture { + std::string name; + std::vector<std::string> texture_paths; + + inline friend bool operator==(const GlTexture& lhs, const GlTexture& rhs) { + return lhs.name == rhs.name && lhs.texture_paths == rhs.texture_paths; + } +}; + +/** + * AAPT2 XML configuration binary representation. + */ +struct Configuration { + std::unordered_map<std::string, Artifact> artifacts; + Maybe<std::string> artifact_format; + + Group<Abi> abi_groups; + Group<ConfigDescription> screen_density_groups; + Group<Locale> locale_groups; + Group<AndroidSdk> android_sdk_groups; + Group<DeviceFeature> device_feature_groups; + Group<GlTexture> gl_texture_groups; +}; + +} // namespace configuration + +// Forward declaration of classes used in the API. +struct IDiagnostics; +namespace xml { +class Element; +} + +/** + * XML configuration file parser for the split and optimize commands. + */ +class ConfigurationParser { + public: + /** Returns a ConfigurationParser for the configuration in the provided file contents. */ + static ConfigurationParser ForContents(const std::string& contents) { + ConfigurationParser parser{contents}; + return parser; + } + + /** Returns a ConfigurationParser for the file located at the provided path. */ + static ConfigurationParser ForPath(const std::string& path) { + // TODO: Read XML file into memory. + return ForContents(path); + } + + /** Sets the diagnostics context to use when parsing. */ + ConfigurationParser& WithDiagnostics(IDiagnostics* diagnostics) { + diag_ = diagnostics; + return *this; + } + + /** + * Parses the configuration file and returns the results. If the configuration could not be parsed + * the result is empty and any errors will be displayed with the provided diagnostics context. + */ + Maybe<configuration::Configuration> Parse(); + + protected: + /** + * Instantiates a new ConfigurationParser with the provided configuration file and a no-op + * diagnostics context. The default diagnostics context can be overridden with a call to + * WithDiagnostics(IDiagnostics *). + */ + explicit ConfigurationParser(std::string contents); + + /** Returns the current diagnostics context to any subclasses. */ + IDiagnostics* diagnostics() { + return diag_; + } + + /** + * An ActionHandler for processing XML elements in the XmlActionExecutor. Returns true if the + * element was successfully processed, otherwise returns false. + */ + using ActionHandler = std::function<bool(configuration::Configuration* config, + xml::Element* element, + IDiagnostics* diag)>; + + /** Handler for <artifact> tags. */ + static ActionHandler artifact_handler_; + /** Handler for <artifact-format> tags. */ + static ActionHandler artifact_format_handler_; + /** Handler for <abi-group> tags. */ + static ActionHandler abi_group_handler_; + /** Handler for <screen-density-group> tags. */ + static ActionHandler screen_density_group_handler_; + /** Handler for <locale-group> tags. */ + static ActionHandler locale_group_handler_; + /** Handler for <android-sdk-group> tags. */ + static ActionHandler android_sdk_group_handler_; + /** Handler for <gl-texture-group> tags. */ + static ActionHandler gl_texture_group_handler_; + /** Handler for <device-feature-group> tags. */ + static ActionHandler device_feature_group_handler_; + + private: + /** The contents of the configuration file to parse. */ + const std::string contents_; + /** The diagnostics context to send messages to. */ + IDiagnostics* diag_; +}; + +} // namespace aapt + +#endif //AAPT2_CONFIGURATION_H diff --git a/tools/aapt2/configuration/ConfigurationParser_test.cpp b/tools/aapt2/configuration/ConfigurationParser_test.cpp new file mode 100644 index 000000000000..72a97b273cb0 --- /dev/null +++ b/tools/aapt2/configuration/ConfigurationParser_test.cpp @@ -0,0 +1,401 @@ +/* + * Copyright (C) 2017 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. + */ + +#include "configuration/ConfigurationParser.h" + +#include <string> + +#include <gmock/gmock.h> +#include <gtest/gtest.h> + +#include "androidfw/ResourceTypes.h" + +#include "test/Test.h" +#include "xml/XmlDom.h" + +namespace aapt { +namespace { + +using android::ResTable_config; +using configuration::Abi; +using configuration::AndroidSdk; +using configuration::Configuration; +using configuration::DeviceFeature; +using configuration::GlTexture; +using configuration::Locale; +using configuration::AndroidManifest; +using testing::ElementsAre; +using xml::Element; +using xml::NodeCast; + +constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> +<post-process xmlns="http://schemas.android.com/tools/aapt"> + <groups> + <abi-group label="arm"> + <abi>armeabi-v7a</abi> + <abi>arm64-v8a</abi> + </abi-group> + <abi-group label="other"> + <abi>x86</abi> + <abi>mips</abi> + </abi-group> + <screen-density-group label="large"> + <screen-density>xhdpi</screen-density> + <screen-density>xxhdpi</screen-density> + <screen-density>xxxhdpi</screen-density> + </screen-density-group> + <screen-density-group label="alldpi"> + <screen-density>ldpi</screen-density> + <screen-density>mdpi</screen-density> + <screen-density>hdpi</screen-density> + <screen-density>xhdpi</screen-density> + <screen-density>xxhdpi</screen-density> + <screen-density>xxxhdpi</screen-density> + </screen-density-group> + <locale-group label="europe"> + <locale lang="en"/> + <locale lang="es"/> + <locale lang="fr"/> + <locale lang="de"/> + </locale-group> + <locale-group label="north-america"> + <locale lang="en"/> + <locale lang="es" region="MX"/> + <locale lang="fr" region="CA"/> + </locale-group> + <locale-group label="all"> + <locale/> + </locale-group> + <android-sdk-group label="19"> + <android-sdk + minSdkVersion="19" + targetSdkVersion="24" + maxSdkVersion="25"> + <manifest> + <!--- manifest additions here XSLT? TODO --> + </manifest> + </android-sdk> + </android-sdk-group> + <gl-texture-group label="dxt1"> + <gl-texture name="GL_EXT_texture_compression_dxt1"> + <texture-path>assets/dxt1/*</texture-path> + </gl-texture> + </gl-texture-group> + <device-feature-group label="low-latency"> + <supports-feature>android.hardware.audio.low_latency</supports-feature> + </device-feature-group> + </groups> + <artifacts> + <artifact-format> + ${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release + </artifact-format> + <artifact + name="art1" + abi-group="arm" + screen-density-group="large" + locale-group="europe" + android-sdk-group="19" + gl-texture-group="dxt1" + device-feature-group="low-latency"/> + <artifact + name="art2" + abi-group="other" + screen-density-group="alldpi" + locale-group="north-america" + android-sdk-group="19" + gl-texture-group="dxt1" + device-feature-group="low-latency"/> + </artifacts> +</post-process> +)"; + +class ConfigurationParserTest : public ConfigurationParser, public ::testing::Test { + public: + ConfigurationParserTest() : ConfigurationParser("") {} + + protected: + StdErrDiagnostics diag_; +}; + +TEST_F(ConfigurationParserTest, ValidateFile) { + auto parser = ConfigurationParser::ForContents(kValidConfig).WithDiagnostics(&diag_); + auto result = parser.Parse(); + ASSERT_TRUE(result); + Configuration& value = result.value(); + EXPECT_EQ(2ul, value.artifacts.size()); + ASSERT_TRUE(value.artifact_format); + EXPECT_EQ( + "${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release", + value.artifact_format.value() + ); + + EXPECT_EQ(2ul, value.abi_groups.size()); + EXPECT_EQ(2ul, value.abi_groups["arm"].size()); + EXPECT_EQ(2ul, value.abi_groups["other"].size()); + + EXPECT_EQ(2ul, value.screen_density_groups.size()); + EXPECT_EQ(3ul, value.screen_density_groups["large"].size()); + EXPECT_EQ(6ul, value.screen_density_groups["alldpi"].size()); + + EXPECT_EQ(3ul, value.locale_groups.size()); + EXPECT_EQ(4ul, value.locale_groups["europe"].size()); + EXPECT_EQ(3ul, value.locale_groups["north-america"].size()); + EXPECT_EQ(1ul, value.locale_groups["all"].size()); + + EXPECT_EQ(1ul, value.android_sdk_groups.size()); + EXPECT_EQ(1ul, value.android_sdk_groups["19"].size()); + + EXPECT_EQ(1ul, value.gl_texture_groups.size()); + EXPECT_EQ(1ul, value.gl_texture_groups["dxt1"].size()); + + EXPECT_EQ(1ul, value.device_feature_groups.size()); + EXPECT_EQ(1ul, value.device_feature_groups["low-latency"].size()); +} + +TEST_F(ConfigurationParserTest, InvalidNamespace) { + constexpr const char* invalid_ns = R"(<?xml version="1.0" encoding="utf-8" ?> + <post-process xmlns="http://schemas.android.com/tools/another-unknown-tool" />)"; + + auto result = ConfigurationParser::ForContents(invalid_ns).Parse(); + ASSERT_FALSE(result); +} + +TEST_F(ConfigurationParserTest, ArtifactAction) { + static constexpr const char* xml = R"xml( + <artifact + abi-group="arm" + screen-density-group="large" + locale-group="europe" + android-sdk-group="19" + gl-texture-group="dxt1" + device-feature-group="low-latency"/>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = artifact_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + EXPECT_EQ(1ul, config.artifacts.size()); + + auto& artifact = config.artifacts.begin()->second; + EXPECT_EQ("", artifact.name); // TODO: make this fail. + EXPECT_EQ("arm", artifact.abi_group.value()); + EXPECT_EQ("large", artifact.screen_density_group.value()); + EXPECT_EQ("europe", artifact.locale_group.value()); + EXPECT_EQ("19", artifact.android_sdk_group.value()); + EXPECT_EQ("dxt1", artifact.gl_texture_group.value()); + EXPECT_EQ("low-latency", artifact.device_feature_group.value()); +} + +TEST_F(ConfigurationParserTest, ArtifactFormatAction) { + static constexpr const char* xml = R"xml( + <artifact-format> + ${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release + </artifact-format>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = artifact_format_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + ASSERT_TRUE(config.artifact_format); + EXPECT_EQ( + "${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release", + static_cast<std::string>(config.artifact_format.value()) + ); +} + +TEST_F(ConfigurationParserTest, AbiGroupAction) { + static constexpr const char* xml = R"xml( + <abi-group label="arm"> + <!-- First comment. --> + <abi> + armeabi-v7a + </abi> + <!-- Another comment. --> + <abi>arm64-v8a</abi> + </abi-group>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = abi_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + EXPECT_EQ(1ul, config.abi_groups.size()); + ASSERT_EQ(1u, config.abi_groups.count("arm")); + + auto& out = config.abi_groups["arm"]; + ASSERT_THAT(out, ElementsAre(Abi::kArmV7a, Abi::kArm64V8a)); +} + +TEST_F(ConfigurationParserTest, ScreenDensityGroupAction) { + static constexpr const char* xml = R"xml( + <screen-density-group label="large"> + <screen-density>xhdpi</screen-density> + <screen-density> + xxhdpi + </screen-density> + <screen-density>xxxhdpi</screen-density> + </screen-density-group>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = + screen_density_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + EXPECT_EQ(1ul, config.screen_density_groups.size()); + ASSERT_EQ(1u, config.screen_density_groups.count("large")); + + ConfigDescription xhdpi; + xhdpi.density = ResTable_config::DENSITY_XHIGH; + ConfigDescription xxhdpi; + xxhdpi.density = ResTable_config::DENSITY_XXHIGH; + ConfigDescription xxxhdpi; + xxxhdpi.density = ResTable_config::DENSITY_XXXHIGH; + + auto& out = config.screen_density_groups["large"]; + ASSERT_THAT(out, ElementsAre(xhdpi, xxhdpi, xxxhdpi)); +} + +TEST_F(ConfigurationParserTest, LocaleGroupAction) { + static constexpr const char* xml = R"xml( + <locale-group label="europe"> + <locale lang="en"/> + <locale lang="es"/> + <locale lang="fr"/> + <locale lang="de"/> + </locale-group>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = locale_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + ASSERT_EQ(1ul, config.locale_groups.size()); + ASSERT_EQ(1u, config.locale_groups.count("europe")); + + auto& out = config.locale_groups["europe"]; + + Locale en; + en.lang = std::string("en"); + Locale es; + es.lang = std::string("es"); + Locale fr; + fr.lang = std::string("fr"); + Locale de; + de.lang = std::string("de"); + + ASSERT_THAT(out, ElementsAre(en, es, fr, de)); +} + +TEST_F(ConfigurationParserTest, AndroidSdkGroupAction) { + static constexpr const char* xml = R"xml( + <android-sdk-group label="19"> + <android-sdk + minSdkVersion="19" + targetSdkVersion="24" + maxSdkVersion="25"> + <manifest> + <!--- manifest additions here XSLT? TODO --> + </manifest> + </android-sdk> + </android-sdk-group>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = android_sdk_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + ASSERT_EQ(1ul, config.android_sdk_groups.size()); + ASSERT_EQ(1u, config.android_sdk_groups.count("19")); + + auto& out = config.android_sdk_groups["19"]; + + AndroidSdk sdk; + sdk.min_sdk_version = std::string("19"); + sdk.target_sdk_version = std::string("24"); + sdk.max_sdk_version = std::string("25"); + sdk.manifest = AndroidManifest(); + + ASSERT_EQ(1ul, out.size()); + ASSERT_EQ(sdk, out[0]); +} + +TEST_F(ConfigurationParserTest, GlTextureGroupAction) { + static constexpr const char* xml = R"xml( + <gl-texture-group label="dxt1"> + <gl-texture name="GL_EXT_texture_compression_dxt1"> + <texture-path>assets/dxt1/main/*</texture-path> + <texture-path> + assets/dxt1/test/* + </texture-path> + </gl-texture> + </gl-texture-group>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok = gl_texture_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + EXPECT_EQ(1ul, config.gl_texture_groups.size()); + ASSERT_EQ(1u, config.gl_texture_groups.count("dxt1")); + + auto& out = config.gl_texture_groups["dxt1"]; + + GlTexture texture{ + std::string("GL_EXT_texture_compression_dxt1"), + {"assets/dxt1/main/*", "assets/dxt1/test/*"} + }; + + ASSERT_EQ(1ul, out.size()); + ASSERT_EQ(texture, out[0]); +} + +TEST_F(ConfigurationParserTest, DeviceFeatureGroupAction) { + static constexpr const char* xml = R"xml( + <device-feature-group label="low-latency"> + <supports-feature>android.hardware.audio.low_latency</supports-feature> + <supports-feature> + android.hardware.audio.pro + </supports-feature> + </device-feature-group>)xml"; + + auto doc = test::BuildXmlDom(xml); + + Configuration config; + bool ok + = device_feature_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + ASSERT_TRUE(ok); + + EXPECT_EQ(1ul, config.device_feature_groups.size()); + ASSERT_EQ(1u, config.device_feature_groups.count("low-latency")); + + auto& out = config.device_feature_groups["low-latency"]; + + DeviceFeature low_latency = "android.hardware.audio.low_latency"; + DeviceFeature pro = "android.hardware.audio.pro"; + ASSERT_THAT(out, ElementsAre(low_latency, pro)); +} + +} // namespace +} // namespace aapt diff --git a/tools/aapt2/configuration/aapt2.xsd b/tools/aapt2/configuration/aapt2.xsd new file mode 100644 index 000000000000..47bf99e28089 --- /dev/null +++ b/tools/aapt2/configuration/aapt2.xsd @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="utf-8" ?> +<xsd:schema + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" + xmlns="http://schemas.android.com/tools/aapt2" + targetNamespace="http://schemas.android.com/tools/aapt2"> + + <xsd:element name="post-process"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="groups" type="groups"/> + <xsd:element name="artifacts" type="artifacts"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:complexType name="groups"> + <xsd:sequence> + <xsd:element name="abi-group" type="abi-group" maxOccurs="unbounded"/> + <xsd:element name="screen-density-group" type="screen-density-group" maxOccurs="unbounded"/> + <xsd:element name="locale-group" type="locale-group" maxOccurs="unbounded"/> + <xsd:element name="android-sdk-group" type="android-sdk-group" maxOccurs="unbounded"/> + <xsd:element + name="gl-texture-group" + type="gl-texture-group" + maxOccurs="unbounded"/> + <xsd:element name="device-feature-group" type="device-feature-group" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="artifacts"> + <xsd:sequence> + <xsd:element name="artifact-format" type="xsd:string"/> + <xsd:element name="artifact" type="artifact" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="generate-all" type="xsd:boolean"/> + </xsd:complexType> + + <!-- Groups output artifacts together by dimension labels. --> + <xsd:complexType name="artifact"> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="abi-group" type="xsd:string"/> + <xsd:attribute name="android-sdk-group" type="xsd:string"/> + <xsd:attribute name="device-feature-group" type="xsd:string"/> + <xsd:attribute name="gl-texture-group" type="xsd:string"/> + <xsd:attribute name="screen-density-group" type="xsd:string"/> + <xsd:attribute name="locale-group" type="xsd:string"/> + </xsd:complexType> + + <xsd:complexType name="gl-texture-group"> + <xsd:sequence> + <xsd:element name="gl-texture" type="gl-texture" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="gl-texture"> + <xsd:sequence> + <xsd:element name="texture-path" type="xsd:string" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="device-feature-group"> + <xsd:sequence> + <xsd:element name="supports-feature" type="xsd:string" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="abi-group"> + <xsd:sequence> + <xsd:element name="abi" type="abi-name" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:simpleType name="abi-name"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="armeabi"/> + <xsd:enumeration value="armeabi-v7a"/> + <xsd:enumeration value="arm64-v8a"/> + <xsd:enumeration value="x86"/> + <xsd:enumeration value="x86_64"/> + <xsd:enumeration value="mips"/> + <xsd:enumeration value="mips64"/> + <xsd:enumeration value="fat"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:complexType name="screen-density-group"> + <xsd:sequence> + <xsd:element name="screen-density" type="screen-density" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:simpleType name="screen-density"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="alldpi"/> + <xsd:enumeration value="ldpi"/> + <xsd:enumeration value="mdpi"/> + <xsd:enumeration value="hdpi"/> + <xsd:enumeration value="xhdpi"/> + <xsd:enumeration value="xxhdpi"/> + <xsd:enumeration value="xxxhdpi"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:complexType name="android-sdk-group"> + <xsd:sequence> + <xsd:element name="android-sdk" type="android-sdk" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="android-sdk"> + <!-- TODO(safarmer): Add permissions to add/remove. --> + <!-- TODO(safarmer): Add option for uncompressed native libs. --> + <xsd:sequence> + <xsd:element name="manifest" type="manifest"/> + </xsd:sequence> + <xsd:attribute name="minSdkVersion" type="xsd:integer"/> + <xsd:attribute name="targetSdkVersion" type="xsd:integer"/> + <xsd:attribute name="maxSdkVersion" type="xsd:integer"/> + </xsd:complexType> + + <!-- TODO(safarmer): Figure out the best way to handle manifest updates. --> + <xsd:simpleType name="manifest"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + + <xsd:complexType name="locale-group"> + <xsd:sequence> + <xsd:element name="locale" type="locale" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="locale"> + <xsd:attribute name="lang" type="xsd:string"/> + <xsd:attribute name="region" type="xsd:string"/> + <xsd:attribute name="compressed" type="xsd:boolean"/> + </xsd:complexType> + +</xsd:schema> diff --git a/tools/aapt2/configuration/example/config.xml b/tools/aapt2/configuration/example/config.xml new file mode 100644 index 000000000000..a8360f870b71 --- /dev/null +++ b/tools/aapt2/configuration/example/config.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8" ?> +<post-process xmlns="http://schemas.android.com/tools/aapt2"> + <groups> + <abi-group label="arm"> + <abi>armeabi-v7a</abi> + <abi>arm64-v8a</abi> + </abi-group> + + <abi-group label="other"> + <abi>x86</abi> + <abi>mips</abi> + </abi-group> + + <screen-density-group label="large"> + <screen-density>xhdpi</screen-density> + <screen-density>xxhdpi</screen-density> + <screen-density>xxxhdpi</screen-density> + </screen-density-group> + + <screen-density-group label="alldpi"> + <screen-density>ldpi</screen-density> + <screen-density>mdpi</screen-density> + <screen-density>hdpi</screen-density> + <screen-density>xhdpi</screen-density> + <screen-density>xxhdpi</screen-density> + <screen-density>xxxhdpi</screen-density> + </screen-density-group> + + <locale-group label="europe"> + <locale lang="en"/> + <locale lang="es"/> + <locale lang="fr"/> + <locale lang="de" compressed="true"/> + </locale-group> + + <locale-group label="north-america"> + <locale lang="en"/> + <locale lang="es" region="MX"/> + <locale lang="fr" region="CA" compressed="true"/> + </locale-group> + + <locale-group label="all"> + <locale compressed="true"/> + </locale-group> + + <android-sdk-group label="19"> + <android-sdk + minSdkVersion="19" + targetSdkVersion="24" + maxSdkVersion="25"> + <manifest> + <!--- manifest additions here XSLT? TODO --> + </manifest> + </android-sdk> + </android-sdk-group> + + <gl-texture-group label="dxt1"> + <gl-texture name="GL_EXT_texture_compression_dxt1"> + <texture-path>assets/dxt1/*</texture-path> + </gl-texture> + </gl-texture-group> + + <device-feature-group label="low-latency"> + <supports-feature>android.hardware.audio.low_latency</supports-feature> + </device-feature-group> + </groups> + + <artifacts> + <artifact-format> + ${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release + </artifact-format> + + <artifact + abi-group="arm" + screen-density-group="large" + locale-group="europe" + android-sdk-group="19" + gl-texture-group="dxt1" + device-feature-group="low-latency"/> + + <artifact + abi-group="other" + screen-density-group="alldpi" + locale-group="north-america" + android-sdk-group="19" + gl-texture-group="dxt1" + device-feature-group="low-latency"/> + + </artifacts> +</post-process> diff --git a/tools/aapt2/link/TableMerger.cpp b/tools/aapt2/link/TableMerger.cpp index cce750acc2d6..10e837c725e5 100644 --- a/tools/aapt2/link/TableMerger.cpp +++ b/tools/aapt2/link/TableMerger.cpp @@ -179,32 +179,39 @@ static bool MergeEntry(IAaptContext* context, const Source& src, return true; } -/** - * Modified CollisionResolver which will merge Styleables. Used with overlays. - * - * Styleables are not actual resources, but they are treated as such during the - * compilation phase. Styleables don't simply overlay each other, their - * definitions merge - * and accumulate. If both values are Styleables, we just merge them into the - * existing value. - */ -static ResourceTable::CollisionResult ResolveMergeCollision(Value* existing, - Value* incoming) { +// Modified CollisionResolver which will merge Styleables and Styles. Used with overlays. +// +// Styleables are not actual resources, but they are treated as such during the +// compilation phase. +// +// Styleables and Styles don't simply overlay each other, their definitions merge +// and accumulate. If both values are Styleables/Styles, we just merge them into the +// existing value. +static ResourceTable::CollisionResult ResolveMergeCollision(Value* existing, Value* incoming, + StringPool* pool) { if (Styleable* existing_styleable = ValueCast<Styleable>(existing)) { if (Styleable* incoming_styleable = ValueCast<Styleable>(incoming)) { // Styleables get merged. existing_styleable->MergeWith(incoming_styleable); return ResourceTable::CollisionResult::kKeepOriginal; } + } else if (Style* existing_style = ValueCast<Style>(existing)) { + if (Style* incoming_style = ValueCast<Style>(incoming)) { + // Styles get merged. + existing_style->MergeWith(incoming_style, pool); + return ResourceTable::CollisionResult::kKeepOriginal; + } } // Delegate to the default handler. return ResourceTable::ResolveValueCollision(existing, incoming); } -static ResourceTable::CollisionResult MergeConfigValue( - IAaptContext* context, const ResourceNameRef& res_name, const bool overlay, - ResourceConfigValue* dst_config_value, - ResourceConfigValue* src_config_value) { +static ResourceTable::CollisionResult MergeConfigValue(IAaptContext* context, + const ResourceNameRef& res_name, + const bool overlay, + ResourceConfigValue* dst_config_value, + ResourceConfigValue* src_config_value, + StringPool* pool) { using CollisionResult = ResourceTable::CollisionResult; Value* dst_value = dst_config_value->value.get(); @@ -212,10 +219,9 @@ static ResourceTable::CollisionResult MergeConfigValue( CollisionResult collision_result; if (overlay) { - collision_result = ResolveMergeCollision(dst_value, src_value); + collision_result = ResolveMergeCollision(dst_value, src_value, pool); } else { - collision_result = - ResourceTable::ResolveValueCollision(dst_value, src_value); + collision_result = ResourceTable::ResolveValueCollision(dst_value, src_value); } if (collision_result == CollisionResult::kConflict) { @@ -224,10 +230,9 @@ static ResourceTable::CollisionResult MergeConfigValue( } // Error! - context->GetDiagnostics()->Error( - DiagMessage(src_value->GetSource()) - << "resource '" << res_name << "' has a conflicting value for " - << "configuration (" << src_config_value->config << ")"); + context->GetDiagnostics()->Error(DiagMessage(src_value->GetSource()) + << "resource '" << res_name << "' has a conflicting value for " + << "configuration (" << src_config_value->config << ")"); context->GetDiagnostics()->Note(DiagMessage(dst_value->GetSource()) << "originally defined here"); return CollisionResult::kConflict; @@ -287,7 +292,7 @@ bool TableMerger::DoMerge(const Source& src, ResourceTable* src_table, if (dst_config_value) { CollisionResult collision_result = MergeConfigValue(context_, res_name, overlay, dst_config_value, - src_config_value.get()); + src_config_value.get(), &master_table_->string_pool); if (collision_result == CollisionResult::kConflict) { error = true; continue; @@ -295,25 +300,22 @@ bool TableMerger::DoMerge(const Source& src, ResourceTable* src_table, continue; } } else { - dst_config_value = dst_entry->FindOrCreateValue( - src_config_value->config, src_config_value->product); + dst_config_value = + dst_entry->FindOrCreateValue(src_config_value->config, src_config_value->product); } // Continue if we're taking the new resource. - if (FileReference* f = - ValueCast<FileReference>(src_config_value->value.get())) { + if (FileReference* f = ValueCast<FileReference>(src_config_value->value.get())) { std::unique_ptr<FileReference> new_file_ref; if (mangle_package) { new_file_ref = CloneAndMangleFile(src_package->name, *f); } else { - new_file_ref = std::unique_ptr<FileReference>( - f->Clone(&master_table_->string_pool)); + new_file_ref = std::unique_ptr<FileReference>(f->Clone(&master_table_->string_pool)); } if (callback) { - if (!callback(res_name, src_config_value->config, - new_file_ref.get(), f)) { + if (!callback(res_name, src_config_value->config, new_file_ref.get(), f)) { error = true; continue; } @@ -337,18 +339,15 @@ std::unique_ptr<FileReference> TableMerger::CloneAndMangleFile( std::string mangled_entry = NameMangler::MangleEntry(package, entry.to_string()); std::string newPath = prefix.to_string() + mangled_entry + suffix.to_string(); std::unique_ptr<FileReference> new_file_ref = - util::make_unique<FileReference>( - master_table_->string_pool.MakeRef(newPath)); + util::make_unique<FileReference>(master_table_->string_pool.MakeRef(newPath)); new_file_ref->SetComment(file_ref.GetComment()); new_file_ref->SetSource(file_ref.GetSource()); return new_file_ref; } - return std::unique_ptr<FileReference>( - file_ref.Clone(&master_table_->string_pool)); + return std::unique_ptr<FileReference>(file_ref.Clone(&master_table_->string_pool)); } -bool TableMerger::MergeFileImpl(const ResourceFile& file_desc, io::IFile* file, - bool overlay) { +bool TableMerger::MergeFileImpl(const ResourceFile& file_desc, io::IFile* file, bool overlay) { ResourceTable table; std::string path = ResourceUtils::BuildResourceFileName(file_desc); std::unique_ptr<FileReference> file_ref = diff --git a/tools/aapt2/link/TableMerger_test.cpp b/tools/aapt2/link/TableMerger_test.cpp index 147d857e1447..45b01a494164 100644 --- a/tools/aapt2/link/TableMerger_test.cpp +++ b/tools/aapt2/link/TableMerger_test.cpp @@ -20,6 +20,14 @@ #include "io/FileSystem.h" #include "test/Test.h" +using ::aapt::test::ValueEq; +using ::testing::Contains; +using ::testing::NotNull; +using ::testing::UnorderedElementsAreArray; +using ::testing::Pointee; +using ::testing::Field; +using ::testing::Eq; + namespace aapt { struct TableMergerTest : public ::testing::Test { @@ -62,26 +70,20 @@ TEST_F(TableMergerTest, SimpleMerge) { io::FileCollection collection; ASSERT_TRUE(merger.Merge({}, table_a.get())); - ASSERT_TRUE( - merger.MergeAndMangle({}, "com.app.b", table_b.get(), &collection)); + ASSERT_TRUE(merger.MergeAndMangle({}, "com.app.b", table_b.get(), &collection)); EXPECT_TRUE(merger.merged_packages().count("com.app.b") != 0); // Entries from com.app.a should not be mangled. - AAPT_EXPECT_TRUE( - final_table.FindResource(test::ParseNameOrDie("com.app.a:id/foo"))); - AAPT_EXPECT_TRUE( - final_table.FindResource(test::ParseNameOrDie("com.app.a:id/bar"))); - AAPT_EXPECT_TRUE(final_table.FindResource( - test::ParseNameOrDie("com.app.a:styleable/view"))); + EXPECT_TRUE(final_table.FindResource(test::ParseNameOrDie("com.app.a:id/foo"))); + EXPECT_TRUE(final_table.FindResource(test::ParseNameOrDie("com.app.a:id/bar"))); + EXPECT_TRUE(final_table.FindResource(test::ParseNameOrDie("com.app.a:styleable/view"))); // The unmangled name should not be present. - AAPT_EXPECT_FALSE( - final_table.FindResource(test::ParseNameOrDie("com.app.b:id/foo"))); + EXPECT_FALSE(final_table.FindResource(test::ParseNameOrDie("com.app.b:id/foo"))); // Look for the mangled name. - AAPT_EXPECT_TRUE(final_table.FindResource( - test::ParseNameOrDie("com.app.a:id/com.app.b$foo"))); + EXPECT_TRUE(final_table.FindResource(test::ParseNameOrDie("com.app.a:id/com.app.b$foo"))); } TEST_F(TableMergerTest, MergeFile) { @@ -100,7 +102,7 @@ TEST_F(TableMergerTest, MergeFile) { FileReference* file = test::GetValueForConfig<FileReference>( &final_table, "com.app.a:layout/main", test::ParseConfigOrDie("hdpi-v4")); - ASSERT_NE(nullptr, file); + ASSERT_THAT(file, NotNull()); EXPECT_EQ(std::string("res/layout-hdpi-v4/main.xml"), *file->path); } @@ -137,17 +139,14 @@ TEST_F(TableMergerTest, MergeFileReferences) { collection.InsertFile("res/xml/file.xml"); ASSERT_TRUE(merger.Merge({}, table_a.get())); - ASSERT_TRUE( - merger.MergeAndMangle({}, "com.app.b", table_b.get(), &collection)); + ASSERT_TRUE(merger.MergeAndMangle({}, "com.app.b", table_b.get(), &collection)); - FileReference* f = - test::GetValue<FileReference>(&final_table, "com.app.a:xml/file"); - ASSERT_NE(f, nullptr); + FileReference* f = test::GetValue<FileReference>(&final_table, "com.app.a:xml/file"); + ASSERT_THAT(f, NotNull()); EXPECT_EQ(std::string("res/xml/file.xml"), *f->path); - f = test::GetValue<FileReference>(&final_table, - "com.app.a:xml/com.app.b$file"); - ASSERT_NE(f, nullptr); + f = test::GetValue<FileReference>(&final_table, "com.app.a:xml/com.app.b$file"); + ASSERT_THAT(f, NotNull()); EXPECT_EQ(std::string("res/xml/com.app.b$file.xml"), *f->path); } @@ -171,10 +170,9 @@ TEST_F(TableMergerTest, OverrideResourceWithOverlay) { ASSERT_TRUE(merger.Merge({}, base.get())); ASSERT_TRUE(merger.MergeOverlay({}, overlay.get())); - BinaryPrimitive* foo = - test::GetValue<BinaryPrimitive>(&final_table, "com.app.a:bool/foo"); - ASSERT_NE(nullptr, foo); - EXPECT_EQ(0x0u, foo->value.data); + BinaryPrimitive* foo = test::GetValue<BinaryPrimitive>(&final_table, "com.app.a:bool/foo"); + ASSERT_THAT(foo, + Pointee(Field(&BinaryPrimitive::value, Field(&android::Res_value::data, Eq(0u))))); } TEST_F(TableMergerTest, OverrideSameResourceIdsWithOverlay) { @@ -301,7 +299,7 @@ TEST_F(TableMergerTest, FailToMergeNewResourceWithoutAutoAddOverlay) { ASSERT_FALSE(merger.MergeOverlay({}, table_b.get())); } -TEST_F(TableMergerTest, OverlaidStyleablesShouldBeMerged) { +TEST_F(TableMergerTest, OverlaidStyleablesAndStylesShouldBeMerged) { std::unique_ptr<ResourceTable> table_a = test::ResourceTableBuilder() .SetPackageId("com.app.a", 0x7f) @@ -310,15 +308,27 @@ TEST_F(TableMergerTest, OverlaidStyleablesShouldBeMerged) { .AddItem("com.app.a:attr/bar") .AddItem("com.app.a:attr/foo", ResourceId(0x01010000)) .Build()) + .AddValue("com.app.a:style/Theme", + test::StyleBuilder() + .SetParent("com.app.a:style/Parent") + .AddItem("com.app.a:attr/bar", util::make_unique<Id>()) + .AddItem("com.app.a:attr/foo", ResourceUtils::MakeBool(false)) + .Build()) .Build(); std::unique_ptr<ResourceTable> table_b = test::ResourceTableBuilder() .SetPackageId("com.app.a", 0x7f) - .AddValue("com.app.a:styleable/Foo", - test::StyleableBuilder() - .AddItem("com.app.a:attr/bat") - .AddItem("com.app.a:attr/foo") + .AddValue("com.app.a:styleable/Foo", test::StyleableBuilder() + .AddItem("com.app.a:attr/bat") + .AddItem("com.app.a:attr/foo") + .Build()) + .AddValue("com.app.a:style/Theme", + test::StyleBuilder() + .SetParent("com.app.a:style/OverlayParent") + .AddItem("com.app.a:attr/bat", util::make_unique<Id>()) + .AddItem("com.app.a:attr/foo", ResourceId(0x01010000), + ResourceUtils::MakeBool(true)) .Build()) .Build(); @@ -330,18 +340,29 @@ TEST_F(TableMergerTest, OverlaidStyleablesShouldBeMerged) { ASSERT_TRUE(merger.Merge({}, table_a.get())); ASSERT_TRUE(merger.MergeOverlay({}, table_b.get())); - Styleable* styleable = - test::GetValue<Styleable>(&final_table, "com.app.a:styleable/Foo"); - ASSERT_NE(nullptr, styleable); + Styleable* styleable = test::GetValue<Styleable>(&final_table, "com.app.a:styleable/Foo"); + ASSERT_THAT(styleable, NotNull()); std::vector<Reference> expected_refs = { Reference(test::ParseNameOrDie("com.app.a:attr/bar")), Reference(test::ParseNameOrDie("com.app.a:attr/bat")), - Reference(test::ParseNameOrDie("com.app.a:attr/foo"), - ResourceId(0x01010000)), + Reference(test::ParseNameOrDie("com.app.a:attr/foo"), ResourceId(0x01010000)), }; + EXPECT_THAT(styleable->entries, UnorderedElementsAreArray(expected_refs)); + + Style* style = test::GetValue<Style>(&final_table, "com.app.a:style/Theme"); + ASSERT_THAT(style, NotNull()); + + std::vector<Reference> extracted_refs; + for (const auto& entry : style->entries) { + extracted_refs.push_back(entry.key); + } + EXPECT_THAT(extracted_refs, UnorderedElementsAreArray(expected_refs)); - EXPECT_EQ(expected_refs, styleable->entries); + const auto expected = ResourceUtils::MakeBool(true); + EXPECT_THAT(style->entries, Contains(Field(&Style::Entry::value, Pointee(ValueEq(*expected))))); + EXPECT_THAT(style->parent, + Eq(make_value(Reference(test::ParseNameOrDie("com.app.a:style/OverlayParent"))))); } } // namespace aapt diff --git a/tools/aapt2/test/Common.h b/tools/aapt2/test/Common.h index 248921f3afea..a937de8869a6 100644 --- a/tools/aapt2/test/Common.h +++ b/tools/aapt2/test/Common.h @@ -22,12 +22,14 @@ #include "android-base/logging.h" #include "android-base/macros.h" #include "androidfw/StringPiece.h" +#include "gmock/gmock.h" #include "gtest/gtest.h" #include "ConfigDescription.h" #include "Debug.h" #include "ResourceTable.h" #include "ResourceUtils.h" +#include "ResourceValues.h" #include "ValueVisitor.h" #include "io/File.h" #include "process/IResourceTableConsumer.h" @@ -51,13 +53,11 @@ struct DummyDiagnosticsImpl : public IDiagnostics { return; case Level::Warn: - std::cerr << actual_msg.source << ": warn: " << actual_msg.message - << "." << std::endl; + std::cerr << actual_msg.source << ": warn: " << actual_msg.message << "." << std::endl; break; case Level::Error: - std::cerr << actual_msg.source << ": error: " << actual_msg.message - << "." << std::endl; + std::cerr << actual_msg.source << ": error: " << actual_msg.message << "." << std::endl; break; } } @@ -84,11 +84,9 @@ template <typename T> T* GetValueForConfigAndProduct(ResourceTable* table, const android::StringPiece& res_name, const ConfigDescription& config, const android::StringPiece& product) { - Maybe<ResourceTable::SearchResult> result = - table->FindResource(ParseNameOrDie(res_name)); + Maybe<ResourceTable::SearchResult> result = table->FindResource(ParseNameOrDie(res_name)); if (result) { - ResourceConfigValue* config_value = - result.value().entry->FindValue(config, product); + ResourceConfigValue* config_value = result.value().entry->FindValue(config, product); if (config_value) { return ValueCast<T>(config_value->value.get()); } @@ -111,9 +109,13 @@ class TestFile : public io::IFile { public: explicit TestFile(const android::StringPiece& path) : source_(path) {} - std::unique_ptr<io::IData> OpenAsData() override { return {}; } + std::unique_ptr<io::IData> OpenAsData() override { + return {}; + } - const Source& GetSource() const override { return source_; } + const Source& GetSource() const override { + return source_; + } private: DISALLOW_COPY_AND_ASSIGN(TestFile); @@ -122,6 +124,47 @@ class TestFile : public io::IFile { }; } // namespace test + +// Workaround gtest bug (https://github.com/google/googletest/issues/443) +// that does not select base class operator<< for derived class T. +template <typename T> +typename std::enable_if<std::is_base_of<Value, T>::value, std::ostream&>::type operator<<( + std::ostream& out, const T& value) { + value.Print(&out); + return out; +} + +template std::ostream& operator<<<Item>(std::ostream&, const Item&); +template std::ostream& operator<<<Reference>(std::ostream&, const Reference&); +template std::ostream& operator<<<Id>(std::ostream&, const Id&); +template std::ostream& operator<<<RawString>(std::ostream&, const RawString&); +template std::ostream& operator<<<String>(std::ostream&, const String&); +template std::ostream& operator<<<StyledString>(std::ostream&, const StyledString&); +template std::ostream& operator<<<FileReference>(std::ostream&, const FileReference&); +template std::ostream& operator<<<BinaryPrimitive>(std::ostream&, const BinaryPrimitive&); +template std::ostream& operator<<<Attribute>(std::ostream&, const Attribute&); +template std::ostream& operator<<<Style>(std::ostream&, const Style&); +template std::ostream& operator<<<Array>(std::ostream&, const Array&); +template std::ostream& operator<<<Plural>(std::ostream&, const Plural&); + +// Add a print method to Maybe. +template <typename T> +void PrintTo(const Maybe<T>& value, std::ostream* out) { + if (value) { + *out << ::testing::PrintToString(value.value()); + } else { + *out << "Nothing"; + } +} + +namespace test { + +MATCHER_P(ValueEq, a, + std::string(negation ? "isn't" : "is") + " equal to " + ::testing::PrintToString(a)) { + return arg.Equals(&a); +} + +} // namespace test } // namespace aapt #endif /* AAPT_TEST_COMMON_H */ diff --git a/tools/aapt2/test/Test.h b/tools/aapt2/test/Test.h index ec07432fa51e..a24c01cd4137 100644 --- a/tools/aapt2/test/Test.h +++ b/tools/aapt2/test/Test.h @@ -17,6 +17,7 @@ #ifndef AAPT_TEST_TEST_H #define AAPT_TEST_TEST_H +#include "gmock/gmock.h" #include "gtest/gtest.h" #include "test/Builders.h" diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 164b7b059183..58df4ee227f2 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -1080,11 +1080,9 @@ public class WifiManager { * Name). In the case when there is an existing configuration with the same * FQDN, the new configuration will replace the existing configuration. * - * An {@link IllegalArgumentException} will be thrown on failure. - * An {@link UnsupportedOperationException} will be thrown if Passpoint is not enabled - * on the device. - * * @param config The Passpoint configuration to be added + * @throws IllegalArgumentException if configuration is invalid + * @throws UnsupportedOperationException if Passpoint is not enabled on the device. */ public void addOrUpdatePasspointConfiguration(PasspointConfiguration config) { try { @@ -1099,11 +1097,9 @@ public class WifiManager { /** * Remove the Passpoint configuration identified by its FQDN (Fully Qualified Domain Name). * - * An {@link IllegalArgumentException} will be thrown on failure. - * An {@link UnsupportedOperationException} will be thrown if Passpoint is not enabled - * on the device. - * * @param fqdn The FQDN of the Passpoint configuration to be removed + * @throws IllegalArgumentException if no configuration is associated with the given FQDN. + * @throws UnsupportedOperationException if Passpoint is not enabled on the device. */ public void removePasspointConfiguration(String fqdn) { try { @@ -1120,10 +1116,8 @@ public class WifiManager { * * An empty list will be returned when no configurations are installed. * - * An {@link UnsupportedOperationException} will be thrown if Passpoint is not enabled - * on the device. - * * @return A list of {@link PasspointConfiguration} + * @throws UnsupportedOperationException if Passpoint is not enabled on the device. */ public List<PasspointConfiguration> getPasspointConfigurations() { try { @@ -1139,12 +1133,10 @@ public class WifiManager { * {@link #EXTRA_ICON} will indicate the result of the request. * A missing intent extra {@link #EXTRA_ICON} will indicate a failure. * - * An {@link UnsupportedOperationException} will be thrown if Passpoint is not enabled - * on the device. - * * @param bssid The BSSID of the AP * @param fileName Name of the icon file (remote file) to query from the AP * + * @throws UnsupportedOperationException if Passpoint is not enabled on the device. * @hide */ public void queryPasspointIcon(long bssid, String fileName) { diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java index f892bb0a3884..71d4173a389c 100644 --- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java +++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java @@ -62,16 +62,36 @@ public final class PasspointConfiguration implements Parcelable { * Configurations under HomeSp subtree. */ private HomeSp mHomeSp = null; + /** + * Set the Home SP (Service Provider) information. + * + * @param homeSp The Home SP information to set to + */ public void setHomeSp(HomeSp homeSp) { mHomeSp = homeSp; } + /** + * Get the Home SP (Service Provider) information. + * + * @return Home SP information + */ public HomeSp getHomeSp() { return mHomeSp; } /** * Configurations under Credential subtree. */ private Credential mCredential = null; + /** + * Set the credential information. + * + * @param credential The credential information to set to + */ public void setCredential(Credential credential) { mCredential = credential; } + /** + * Get the credential information. + * + * @return credential information + */ public Credential getCredential() { return mCredential; } diff --git a/wifi/java/android/net/wifi/hotspot2/pps/Credential.java b/wifi/java/android/net/wifi/hotspot2/pps/Credential.java index d712feb7c6d2..e8fcbfd6731e 100644 --- a/wifi/java/android/net/wifi/hotspot2/pps/Credential.java +++ b/wifi/java/android/net/wifi/hotspot2/pps/Credential.java @@ -97,9 +97,19 @@ public final class Credential implements Parcelable { * comparing the realm specified in that hotspot's ANQP element. */ private String mRealm = null; + /** + * Set the realm associated with this credential. + * + * @param realm The realm to set to + */ public void setRealm(String realm) { mRealm = realm; } + /** + * Get the realm associated with this credential. + * + * @return the realm associated with this credential + */ public String getRealm() { return mRealm; } @@ -162,9 +172,19 @@ public final class Credential implements Parcelable { * Username of the credential. */ private String mUsername = null; + /** + * Set the username associated with this user credential. + * + * @param username The username to set to + */ public void setUsername(String username) { mUsername = username; } + /** + * Get the username associated with this user credential. + * + * @return the username associated with this user credential + */ public String getUsername() { return mUsername; } @@ -173,9 +193,19 @@ public final class Credential implements Parcelable { * Base64-encoded password. */ private String mPassword = null; + /** + * Set the Base64-encoded password associated with this user credential. + * + * @param password The password to set to + */ public void setPassword(String password) { mPassword = password; } + /** + * Get the Base64-encoded password associated with this user credential. + * + * @return the Base64-encoded password associated with this user credential + */ public String getPassword() { return mPassword; } @@ -233,14 +263,30 @@ public final class Credential implements Parcelable { /** * EAP (Extensible Authentication Protocol) method type. - * Refer to http://www.iana.org/assignments/eap-numbers/eap-numbers.xml#eap-numbers-4 - * for valid values. + * Refer to + * <a href="http://www.iana.org/assignments/eap-numbers/eap-numbers.xml#eap-numbers-4"> + * EAP Numbers</a> for valid values. * Using Integer.MIN_VALUE to indicate unset value. */ private int mEapType = Integer.MIN_VALUE; + /** + * Set the EAP (Extensible Authentication Protocol) method type associated with this + * user credential. + * Refer to + * <a href="http://www.iana.org/assignments/eap-numbers/eap-numbers.xml#eap-numbers-4"> + * EAP Numbers</a> for valid values. + * + * @param eapType The EAP method type associated with this user credential + */ public void setEapType(int eapType) { mEapType = eapType; } + /** + * Get the EAP (Extensible Authentication Protocol) method type associated with this + * user credential. + * + * @return EAP method type + */ public int getEapType() { return mEapType; } @@ -249,9 +295,19 @@ public final class Credential implements Parcelable { * Non-EAP inner authentication method. */ private String mNonEapInnerMethod = null; + /** + * Set the inner non-EAP method associated with this user credential. + * + * @param nonEapInnerMethod The non-EAP inner method to set to + */ public void setNonEapInnerMethod(String nonEapInnerMethod) { mNonEapInnerMethod = nonEapInnerMethod; } + /** + * Get the inner non-EAP method associated with this user credential. + * + * @return Non-EAP inner method associated with this user credential + */ public String getNonEapInnerMethod() { return mNonEapInnerMethod; } @@ -394,9 +450,19 @@ public final class Credential implements Parcelable { }; } private UserCredential mUserCredential = null; + /** + * Set the user credential information. + * + * @param userCredential The user credential to set to + */ public void setUserCredential(UserCredential userCredential) { mUserCredential = userCredential; } + /** + * Get the user credential information. + * + * @return user credential information + */ public UserCredential getUserCredential() { return mUserCredential; } @@ -421,9 +487,19 @@ public final class Credential implements Parcelable { * Certificate type. */ private String mCertType = null; + /** + * Set the certificate type associated with this certificate credential. + * + * @param certType The certificate type to set to + */ public void setCertType(String certType) { mCertType = certType; } + /** + * Get the certificate type associated with this certificate credential. + * + * @return certificate type + */ public String getCertType() { return mCertType; } @@ -432,9 +508,19 @@ public final class Credential implements Parcelable { * The SHA-256 fingerprint of the certificate. */ private byte[] mCertSha256Fingerprint = null; + /** + * Set the certificate SHA-256 fingerprint associated with this certificate credential. + * + * @param certSha256Fingerprint The certificate fingerprint to set to + */ public void setCertSha256Fingerprint(byte[] certSha256Fingerprint) { mCertSha256Fingerprint = certSha256Fingerprint; } + /** + * Get the certificate SHA-256 fingerprint associated with this certificate credential. + * + * @return certificate SHA-256 fingerprint + */ public byte[] getCertSha256Fingerprint() { return mCertSha256Fingerprint; } @@ -530,9 +616,19 @@ public final class Credential implements Parcelable { }; } private CertificateCredential mCertCredential = null; + /** + * Set the certificate credential information. + * + * @param certCredential The certificate credential to set to + */ public void setCertCredential(CertificateCredential certCredential) { mCertCredential = certCredential; } + /** + * Get the certificate credential information. + * + * @return certificate credential information + */ public CertificateCredential getCertCredential() { return mCertCredential; } @@ -553,9 +649,21 @@ public final class Credential implements Parcelable { * cellular networks */ private String mImsi = null; + /** + * Set the IMSI (International Mobile Subscriber Identity) associated with this SIM + * credential. + * + * @param imsi The IMSI to set to + */ public void setImsi(String imsi) { mImsi = imsi; } + /** + * Get the IMSI (International Mobile Subscriber Identity) associated with this SIM + * credential. + * + * @return IMSI associated with this SIM credential + */ public String getImsi() { return mImsi; } @@ -567,9 +675,21 @@ public final class Credential implements Parcelable { * Using Integer.MIN_VALUE to indicate unset value. */ private int mEapType = Integer.MIN_VALUE; + /** + * Set the EAP (Extensible Authentication Protocol) method type associated with this + * SIM credential. + * + * @param eapType The EAP method type to set to + */ public void setEapType(int eapType) { mEapType = eapType; } + /** + * Get the EAP (Extensible Authentication Protocol) method type associated with this + * SIM credential. + * + * @return EAP method type associated with this SIM credential + */ public int getEapType() { return mEapType; } @@ -704,9 +824,19 @@ public final class Credential implements Parcelable { } } private SimCredential mSimCredential = null; + /** + * Set the SIM credential information. + * + * @param simCredential The SIM credential to set to + */ public void setSimCredential(SimCredential simCredential) { mSimCredential = simCredential; } + /** + * Get the SIM credential information. + * + * @return SIM credential information + */ public SimCredential getSimCredential() { return mSimCredential; } @@ -715,9 +845,19 @@ public final class Credential implements Parcelable { * CA (Certificate Authority) X509 certificate. */ private X509Certificate mCaCertificate = null; + /** + * Set the CA (Certification Authority) certificate associated with this credential. + * + * @param caCertificate The CA certificate to set to + */ public void setCaCertificate(X509Certificate caCertificate) { mCaCertificate = caCertificate; } + /** + * Get the CA (Certification Authority) certificate associated with this credential. + * + * @return CA certificate associated with this credential + */ public X509Certificate getCaCertificate() { return mCaCertificate; } @@ -726,9 +866,19 @@ public final class Credential implements Parcelable { * Client side X509 certificate chain. */ private X509Certificate[] mClientCertificateChain = null; + /** + * Set the client certificate chain associated with this credential. + * + * @param certificateChain The client certificate chain to set to + */ public void setClientCertificateChain(X509Certificate[] certificateChain) { mClientCertificateChain = certificateChain; } + /** + * Get the client certificate chain associated with this credential. + * + * @return client certificate chain associated with this credential + */ public X509Certificate[] getClientCertificateChain() { return mClientCertificateChain; } @@ -737,9 +887,19 @@ public final class Credential implements Parcelable { * Client side private key. */ private PrivateKey mClientPrivateKey = null; + /** + * Set the client private key associated with this credential. + * + * @param clientPrivateKey the client private key to set to + */ public void setClientPrivateKey(PrivateKey clientPrivateKey) { mClientPrivateKey = clientPrivateKey; } + /** + * Get the client private key associated with this credential. + * + * @return client private key associated with this credential. + */ public PrivateKey getClientPrivateKey() { return mClientPrivateKey; } diff --git a/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java b/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java index 2247860d23a5..d829ea81ed56 100644 --- a/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java +++ b/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java @@ -52,9 +52,19 @@ public final class HomeSp implements Parcelable { * FQDN (Fully Qualified Domain Name) of this home service provider. */ private String mFqdn = null; + /** + * Set the FQDN (Fully Qualified Domain Name) associated with this home service provider. + * + * @param fqdn The FQDN to set to + */ public void setFqdn(String fqdn) { mFqdn = fqdn; } + /** + * Get the FQDN (Fully Qualified Domain Name) associated with this home service provider. + * + * @return the FQDN associated with this home service provider + */ public String getFqdn() { return mFqdn; } @@ -63,9 +73,19 @@ public final class HomeSp implements Parcelable { * Friendly name of this home service provider. */ private String mFriendlyName = null; + /** + * Set the friendly name associated with this home service provider. + * + * @param friendlyName The friendly name to set to + */ public void setFriendlyName(String friendlyName) { mFriendlyName = friendlyName; } + /** + * Get the friendly name associated with this home service provider. + * + * @return the friendly name associated with this home service provider + */ public String getFriendlyName() { return mFriendlyName; } @@ -184,9 +204,21 @@ public final class HomeSp implements Parcelable { * which this provider is a member. */ private long[] mRoamingConsortiumOis = null; + /** + * Set the Organization Identifiers (OIs) identifying a roaming consortium of which this + * provider is a member. + * + * @param roamingConsortiumOis Array of roaming consortium OIs + */ public void setRoamingConsortiumOis(long[] roamingConsortiumOis) { mRoamingConsortiumOis = roamingConsortiumOis; } + /** + * Get the Organization Identifiers (OIs) identifying a roaming consortium of which this + * provider is a member. + * + * @return array of roaming consortium OIs + */ public long[] getRoamingConsortiumOis() { return mRoamingConsortiumOis; } |