diff options
135 files changed, 1392 insertions, 304 deletions
diff --git a/core/java/android/service/quicksettings/Tile.java b/core/java/android/service/quicksettings/Tile.java index d60b225e695a..289b0e055f53 100644 --- a/core/java/android/service/quicksettings/Tile.java +++ b/core/java/android/service/quicksettings/Tile.java @@ -40,8 +40,8 @@ public final class Tile implements Parcelable { /** * An unavailable state indicates that for some reason this tile is not currently - * available to the user for some reason, and will have no click action. The tile's - * icon will be tinted differently to reflect this state. + * available to the user, and will have no click action. The tile's icon will be + * tinted differently to reflect this state. */ public static final int STATE_UNAVAILABLE = 0; diff --git a/core/java/android/service/wallpaper/IWallpaperEngine.aidl b/core/java/android/service/wallpaper/IWallpaperEngine.aidl index 93d4def2180e..1a00acf475e3 100644 --- a/core/java/android/service/wallpaper/IWallpaperEngine.aidl +++ b/core/java/android/service/wallpaper/IWallpaperEngine.aidl @@ -42,7 +42,7 @@ interface IWallpaperEngine { @UnsupportedAppUsage oneway void destroy(); oneway void setZoomOut(float scale); - oneway void scalePreview(in Rect positionInWindow); + oneway void resizePreview(in Rect positionInWindow); oneway void removeLocalColorsAreas(in List<RectF> regions); oneway void addLocalColorsAreas(in List<RectF> regions); SurfaceControl mirrorSurfaceControl(); diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 2175859d9de6..2d1a41e92a99 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -163,7 +163,7 @@ public abstract class WallpaperService extends Service { private static final int MSG_TOUCH_EVENT = 10040; private static final int MSG_REQUEST_WALLPAPER_COLORS = 10050; private static final int MSG_ZOOM = 10100; - private static final int MSG_SCALE_PREVIEW = 10110; + private static final int MSG_RESIZE_PREVIEW = 10110; private static final int MSG_REPORT_SHOWN = 10150; private static final int MSG_UPDATE_DIMMING = 10200; private static final List<Float> PROHIBITED_STEPS = Arrays.asList(0f, Float.POSITIVE_INFINITY, @@ -323,7 +323,7 @@ public abstract class WallpaperService extends Service { @Override public void setFixedSize(int width, int height) { - if (!mFixedSizeAllowed) { + if (!mFixedSizeAllowed && !mIWallpaperEngine.mIsPreview) { // Regular apps can't do this. It can only work for // certain designs of window animations, so you can't // rely on it. @@ -1372,16 +1372,9 @@ public abstract class WallpaperService extends Service { } } - private void scalePreview(Rect position) { - if (isPreview() && mPreviewSurfacePosition == null && position != null - || mPreviewSurfacePosition != null - && !mPreviewSurfacePosition.equals(position)) { - mPreviewSurfacePosition = position; - if (mSurfaceControl.isValid()) { - reposition(); - } else { - updateSurface(false, false, false); - } + private void resizePreview(Rect position) { + if (position != null) { + mSurfaceHolder.setFixedSize(position.width(), position.height()); } } @@ -2295,8 +2288,8 @@ public abstract class WallpaperService extends Service { mCaller.sendMessage(msg); } - public void scalePreview(Rect position) { - Message msg = mCaller.obtainMessageO(MSG_SCALE_PREVIEW, position); + public void resizePreview(Rect position) { + Message msg = mCaller.obtainMessageO(MSG_RESIZE_PREVIEW, position); mCaller.sendMessage(msg); } @@ -2383,8 +2376,8 @@ public abstract class WallpaperService extends Service { case MSG_UPDATE_DIMMING: mEngine.updateWallpaperDimming(Float.intBitsToFloat(message.arg1)); break; - case MSG_SCALE_PREVIEW: - mEngine.scalePreview((Rect) message.obj); + case MSG_RESIZE_PREVIEW: + mEngine.resizePreview((Rect) message.obj); break; case MSG_VISIBILITY_CHANGED: if (DEBUG) Log.v(TAG, "Visibility change in " + mEngine diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index 2b7600cbfe53..f2afefe243bc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -2923,8 +2923,10 @@ public class BubbleStackView extends FrameLayout .withEndActions(() -> { View child = mManageMenu.getChildAt(0); child.requestAccessibilityFocus(); - // Update the AV's obscured touchable region for the new visibility state. - mExpandedBubble.getExpandedView().updateObscuredTouchableRegion(); + if (mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) { + // Update the AV's obscured touchable region for the new state. + mExpandedBubble.getExpandedView().updateObscuredTouchableRegion(); + } }) .start(); diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index a822e185479a..5611976ce180 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -308,8 +308,16 @@ public class Utils { @ColorInt public static int getColorAttrDefaultColor(Context context, int attr) { + return getColorAttrDefaultColor(context, attr, 0); + } + + /** + * Get color styled attribute {@code attr}, default to {@code defValue} if not found. + */ + @ColorInt + public static int getColorAttrDefaultColor(Context context, int attr, @ColorInt int defValue) { TypedArray ta = context.obtainStyledAttributes(new int[]{attr}); - @ColorInt int colorAccent = ta.getColor(0, 0); + @ColorInt int colorAccent = ta.getColor(0, defValue); ta.recycle(); return colorAccent; } diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java index c94195477cfc..840c9364de32 100644 --- a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java +++ b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java @@ -251,5 +251,22 @@ public class MobileMappings { } return config; } + + /** + * Returns true if this config and the other config are semantically equal. + * + * Does not override isEquals because existing clients may be relying on the currently + * defined equals behavior. + */ + public boolean areEqual(Config other) { + return showAtLeast3G == other.showAtLeast3G + && show4gFor3g == other.show4gFor3g + && alwaysShowCdmaRssi == other.alwaysShowCdmaRssi + && show4gForLte == other.show4gForLte + && show4glteForLte == other.show4glteForLte + && hideLtePlus == other.hideLtePlus + && hspaDataDistinguishable == other.hspaDataDistinguishable + && alwaysShowDataRatIcon == other.alwaysShowDataRatIcon; + } } } diff --git a/packages/SystemUI/res/layout/media_session_view.xml b/packages/SystemUI/res/layout/media_session_view.xml index 13c9a5ea05b1..95aefab328df 100644 --- a/packages/SystemUI/res/layout/media_session_view.xml +++ b/packages/SystemUI/res/layout/media_session_view.xml @@ -186,7 +186,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:barrierDirection="end" app:constraint_referenced_ids="actionPrev,media_scrubbing_elapsed_time,media_progress_bar,actionNext,media_scrubbing_total_time,action0,action1,action2,action3,action4" - app:layout_constraintStart_toStartOf="parent" + app:layout_constraintRight_toRightOf="@id/actionPlayPause" /> <!-- This barrier is used in expanded view to constrain the bottom row of actions --> diff --git a/packages/SystemUI/res/layout/screenshot_static.xml b/packages/SystemUI/res/layout/screenshot_static.xml index 65983b79570e..efd683f1a97b 100644 --- a/packages/SystemUI/res/layout/screenshot_static.xml +++ b/packages/SystemUI/res/layout/screenshot_static.xml @@ -166,6 +166,7 @@ android:paddingEnd="4dp" android:src="@drawable/ic_work_app_badge" app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/screenshot_message_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> @@ -177,7 +178,24 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/screenshot_message_icon" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintEnd_toStartOf="@id/message_dismiss_button"/> + + <FrameLayout + android:id="@+id/message_dismiss_button" + android:layout_width="@dimen/overlay_dismiss_button_tappable_size" + android:layout_height="@dimen/overlay_dismiss_button_tappable_size" + app:layout_constraintStart_toEndOf="@id/screenshot_message_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + android:contentDescription="@string/screenshot_dismiss_work_profile"> + <ImageView + android:id="@+id/screenshot_dismiss_image" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="@dimen/overlay_dismiss_button_margin" + android:src="@drawable/overlay_cancel"/> + </FrameLayout> </androidx.constraintlayout.widget.ConstraintLayout> </com.android.systemui.screenshot.DraggableConstraintLayout> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 6fe2ca6d6668..25a47f47a35d 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi is af"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth is af"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Moenie Steur Nie is af"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"\'n Outomatiese reël (<xliff:g id="ID_1">%s</xliff:g>) het Moenie Steur Nie aangeskakel."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"\'n Program (<xliff:g id="ID_1">%s</xliff:g>) het Moenie Steur Nie aangeskakel."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"\'n Outomatiese reël of program het Moenie Steur Nie aangeskakel."</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 73b889687bff..e4b5307094ad 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ጠፍቷል"</string> <string name="bt_is_off" msgid="7436344904889461591">"ብሉቱዝ ጠፍቷል"</string> <string name="dnd_is_off" msgid="3185706903793094463">"አትረብሽ ጠፍቷል"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"አትረብሽ በአንድ ራስ-ሰር ደንብ (<xliff:g id="ID_1">%s</xliff:g>) በርቷል።"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"አትረብሽ በአንድ መተግበሪያ (<xliff:g id="ID_1">%s</xliff:g>) በርቷል።"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"አትረብሽ በአንድ ራስ-ሰር ደንብ ወይም መተግበሪያ በርቷል።"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index dbce86fa3873..361cf3a01623 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"ميزة Wi-Fi غير مفعّلة"</string> <string name="bt_is_off" msgid="7436344904889461591">"تم إيقاف البلوتوث."</string> <string name="dnd_is_off" msgid="3185706903793094463">"تم إيقاف وضع \"عدم الإزعاج\""</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة تطبيق (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية أو تطبيق."</string> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index e294156a09aa..6c102a54f5ea 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"ৱাই-ফাই অফ অৱস্থাত আছে"</string> <string name="bt_is_off" msgid="7436344904889461591">"ব্লুটুথ অফ অৱস্থাত আছে"</string> <string name="dnd_is_off" msgid="3185706903793094463">"অসুবিধা নিদিব অফ অৱস্থাত আছে"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"অসুবিধা নিদিব-ক এটা স্বয়ংক্ৰিয় নিয়ম (<xliff:g id="ID_1">%s</xliff:g>)এ অন কৰিলে।"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"অসুবিধা নিদিব-ক কোনো এপ্ (<xliff:g id="ID_1">%s</xliff:g>)এ অন কৰিলে।"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"অসুবিধা নিদিব-ক এটা স্বয়ংক্ৰিয় নিয়ম বা এপে অন কৰিলে।"</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"উন্নত ছেল্ফিৰ বাবে সন্মুখৰ ডিছপ্লে’ লুটিয়াই দিবনে?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"অধিক ৰিজ’লিউশ্বনৰ বহল ফট’ৰ বাবে পিছফালে থকা কেমেৰাটো ব্যৱহাৰ কৰক।"</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ই স্ক্ৰীনখন অফ হ’ব"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"জপাব পৰা ডিভাইচৰ জাপ খুলি থকা হৈছে"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"জপাব পৰা ডিভাইচৰ ওলোটাই থকা হৈছে"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 375f0eea0808..d2529a26fa38 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi deaktivdir"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth deaktivdir"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\"Narahat Etməyin\" deaktivdir"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"\"Narahat etməyin\" rejimi (<xliff:g id="ID_1">%s</xliff:g>) avtomatik qaydası tərəfindən aktiv edildi."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"\"Narahat etməyin\" rejimi (<xliff:g id="ID_1">%s</xliff:g>) tətbiqi tərəfindən aktiv edildi."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"\"Narahat etməyin\" rejimi avtomatik qayda və ya tətbiq tərəfindən aktiv edildi."</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 778e471ca95e..f3c3de3a1970 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"WiFi је искључен"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth је искључен"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Режим Не узнемиравај је искључен"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Аутоматско правило (<xliff:g id="ID_1">%s</xliff:g>) је укључило режим Не узнемиравај."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Апликација (<xliff:g id="ID_1">%s</xliff:g>) је укључила режим Не узнемиравај."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Аутоматско правило или апликација су укључили режим Не узнемиравај."</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 88a7cebe8a24..97a29bdf443e 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi выключаны"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth выключаны"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Рэжым \"Не турбаваць\" выключаны"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Рэжым \"Не турбаваць\" быў уключаны аўтаматычным правілам (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Рэжым \"Не турбаваць\" быў уключаны праграмай (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Рэжым \"Не турбаваць\" быў уключаны аўтаматычным правілам ці праграмай."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Пераключыць на пярэднюю камеру для лепшага сэлфі?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Каб зрабіць шырэйшае фота з больш высокай раздзяляльнасцю, скарыстайце заднюю камеру."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Гэты экран будзе выключаны"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Складная прылада ў раскладзеным выглядзе"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Перавернутая складная прылада"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 1a7a3215afd1..2dd94d29823e 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Функцията за Wi‑Fi е изключена"</string> <string name="bt_is_off" msgid="7436344904889461591">"Функцията за Bluetooth е изключена"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Режимът „Не безпокойте“ е изключен"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Режимът „Не безпокойте“ бе включен от автоматично правило (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Режимът „Не безпокойте“ бе включен от приложение (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Режимът „Не безпокойте“ бе включен от автоматично правило или от приложение."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Да се ползва ли предната камера за по-добро селфи?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Използвайте задната камера за по-широка снимка с по-висока разделителна способност."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Този екран ще се изключи"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Разгъване на сгъваемо устройство"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Обръщане на сгъваемо устройство"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index b4203a5b54c3..864d7e7be6bb 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"ওয়াই ফাই বন্ধ আছে"</string> <string name="bt_is_off" msgid="7436344904889461591">"ব্লুটুথ বন্ধ আছে"</string> <string name="dnd_is_off" msgid="3185706903793094463">"বিরক্ত করবে না বিকল্পটি বন্ধ আছে"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"বিরক্ত করবে না বিকল্পটি একটি স্বয়ংক্রিয় নিয়ম <xliff:g id="ID_1">%s</xliff:g> এর দ্বারা চালু করা হয়েছে।"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"বিরক্ত করবে না বিকল্পটি একটি অ্যাপ <xliff:g id="ID_1">%s</xliff:g> এর দ্বারা চালু করা হয়েছে।"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"বিরক্ত করবে না বিকল্পটি একটি স্বয়ংক্রিয় নিয়ম বা অ্যাপের দ্বারা চালু করা হয়েছে।"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index f227aa6605d0..87b6d3b5805c 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"WiFi je isključen"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth je isključen"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Način rada Ne ometaj je isključen"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Opciju Ne ometaju uključilo je automatsko pravilo (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Način rada Ne ometaj uključila je aplikacija <xliff:g id="ID_1">%s</xliff:g>."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Način rada Ne ometaj uključilo je automatsko pravilo ili aplikacija."</string> @@ -1010,8 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Obrnuti na prednji ekran radi boljeg selfija?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Koristite stražnju kameru za širu fotografiju veće rezolucije."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ekran će se isključiti"</b></string> - <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rasklopljen sklopivi uređaj"</string> - <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Okretanje sklopivog uređaja sa svih strana"</string> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Sklopivi uređaj se rasklapa"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Sklopivi uređaj se obrće"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 5625f727e07d..fcbd8418446b 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"La Wi-Fi està desactivada"</string> <string name="bt_is_off" msgid="7436344904889461591">"El Bluetooth està desactivat"</string> <string name="dnd_is_off" msgid="3185706903793094463">"El mode No molestis està desactivat"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Una regla automàtica (<xliff:g id="ID_1">%s</xliff:g>) ha activat el mode No molestis."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Una aplicació (<xliff:g id="ID_1">%s</xliff:g>) ha activat el mode No molestis."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Una regla automàtica o una aplicació han activat el mode No molestis."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Girar a pantalla frontal per fer millors selfies?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilitza la càmera posterior per obtenir una foto més àmplia amb una resolució més alta."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Aquesta pantalla s\'apagarà"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositiu plegable que es desplega"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositiu plegable que gira"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 1f7ae0bfb8f1..3f6dd913261c 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi je vypnuta"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth je vypnuto"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Režim Nerušit je vypnut"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Režim Nerušit byl zapnut automatickým pravidlem (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Režim Nerušit byl zapnut aplikací (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Režim Nerušit byl zapnut automatickým pravidlem nebo aplikací."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Otočit na přední fotoaparát pro lepší selfie?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Pomocí zadního fotoaparátu pořiďte širší fotku s vyšším rozlišením."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Tato obrazovka se vypne"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rozkládání rozkládacího zařízení"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Otáčení rozkládacího zařízení"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 8b2fc84d8c42..3596d0e8a701 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi er slået fra"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth er slået fra"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Forstyr ikke er slået fra"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Tilstanden Forstyr ikke blev aktiveret af en automatisk regel (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Tilstanden Forstyr ikke blev aktiveret af en app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Tilstanden Forstyr ikke blev aktiveret af en automatisk regel eller en app."</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index ff600c76e2d3..bcae5b4f0f87 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"WLAN ist deaktiviert"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth ist deaktiviert"</string> <string name="dnd_is_off" msgid="3185706903793094463">"„Bitte nicht stören“ ist deaktiviert"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"„Bitte nicht stören“ wurde von einer automatischen Regel aktiviert (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"„Bitte nicht stören“ wurde von einer App aktiviert (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"„Bitte nicht stören“ wurde von einer automatischen Regel oder einer App aktiviert."</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 7a17ea687034..54f162b472df 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Το Wi-Fi είναι ανενεργό"</string> <string name="bt_is_off" msgid="7436344904889461591">"Το Bluetooth είναι ανενεργό"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Η λειτουργία \"Μην ενοχλείτε\" είναι ανενεργή"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε από έναν αυτόματο κανόνα (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε από μια εφαρμογή (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε από έναν αυτόματο κανόνα ή μια εφαρμογή."</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 4cf6b754e1d0..224d6fc43e36 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi is off"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth is off"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Do Not Disturb is off"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Do Not Disturb was turned on by an automatic rule (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Do Not Disturb was turned on by an app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Do Not Disturb was turned on by an automatic rule or app."</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 28738f0f9fd5..6238b83ba860 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi is off"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth is off"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Do Not Disturb is off"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Do Not Disturb was turned on by an automatic rule (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Do Not Disturb was turned on by an app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Do Not Disturb was turned on by an automatic rule or app."</string> @@ -1002,8 +1004,7 @@ <string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Install a camera app"</string> <string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• The app is set up"</string> <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> - <!-- no translation found for keyguard_affordance_press_too_short (2687995216454987952) --> - <skip /> + <string name="keyguard_affordance_press_too_short" msgid="2687995216454987952">"Press and hold to activate"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> @@ -1012,6 +1013,5 @@ <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ This screen will turn off"</b></string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> - <!-- no translation found for stylus_battery_low (7134370101603167096) --> - <skip /> + <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus battery low"</string> </resources> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 4cf6b754e1d0..224d6fc43e36 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi is off"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth is off"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Do Not Disturb is off"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Do Not Disturb was turned on by an automatic rule (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Do Not Disturb was turned on by an app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Do Not Disturb was turned on by an automatic rule or app."</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 4cf6b754e1d0..224d6fc43e36 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi is off"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth is off"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Do Not Disturb is off"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Do Not Disturb was turned on by an automatic rule (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Do Not Disturb was turned on by an app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Do Not Disturb was turned on by an automatic rule or app."</string> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index ef527255a5ef..7bb3fd36de85 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi is off"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth is off"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Do Not Disturb is off"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Do Not Disturb was turned on by an automatic rule (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Do Not Disturb was turned on by an app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Do Not Disturb was turned on by an automatic rule or app."</string> @@ -1002,8 +1004,7 @@ <string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Install a camera app"</string> <string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• The app is set up"</string> <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> - <!-- no translation found for keyguard_affordance_press_too_short (2687995216454987952) --> - <skip /> + <string name="keyguard_affordance_press_too_short" msgid="2687995216454987952">"Press and hold to activate"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> @@ -1012,6 +1013,5 @@ <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930">""<b>"✱ This screen will turn off"</b>""</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> - <!-- no translation found for stylus_battery_low (7134370101603167096) --> - <skip /> + <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus battery low"</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 4addec07eeae..75fdd0d5c914 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi desactivado"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth desactivado"</string> <string name="dnd_is_off" msgid="3185706903793094463">"No interrumpir desactivado"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Se activó el modo No interrumpir con una regla automática (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Se activó el modo No interrumpir con una app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Se activó el modo No interrumpir con una app o regla automática."</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 32e0daa75e34..8ebe61db91c3 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi desactivado"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth desactivado"</string> <string name="dnd_is_off" msgid="3185706903793094463">"No molestar está desactivado"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Una regla automática (<xliff:g id="ID_1">%s</xliff:g>) ha activado No molestar."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Una aplicación (<xliff:g id="ID_1">%s</xliff:g>) ha activado No molestar."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Una aplicación o una regla automática han activado No molestar."</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 6bfc71ea0182..5345e53db68a 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"WiFi on välja lülitatud"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth on välja lülitatud"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Funktsioon Mitte segada on välja lülitatud"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Automaatne reegel (<xliff:g id="ID_1">%s</xliff:g>) lülitas funktsiooni Mitte segada sisse."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Rakendus (<xliff:g id="ID_1">%s</xliff:g>) lülitas funktsiooni Mitte segada sisse."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Automaatne reegel või rakendus lülitas funktsiooni Mitte segada sisse."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Kas kasutada parema selfi jaoks esikaamerat?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Kasutage tagakülje kaamerat, et jäädvustada suurema eraldusvõimega laiem foto."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ See ekraan lülitatakse välja"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Volditava seadme lahtivoltimine"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Volditava seadme ümberpööramine"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index f530e0071189..4ed4bc19508e 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wifi-konexioa desaktibatuta dago"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth bidezko konexioa desaktibatuta dago"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Ez molestatzeko modua desaktibatuta dago"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Ez molestatzeko modua aktibatu du arau automatiko batek (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Ez molestatzeko modua aktibatu du aplikazio batek (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Ez molestatzeko modua aktibatu du arau automatiko edo aplikazio batek."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Telefonoa irauli nahi duzu autoargazki hobeak ateratzeko?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Erabili atzeko kamera kalitate handiagoko argazki zabalago bat ateratzeko."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Pantaila itzali egingo da"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Gailu tolesgarria zabaltzen"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Gailu tolesgarria biratzen"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index d75c5a8eb412..d304821306eb 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi خاموش است"</string> <string name="bt_is_off" msgid="7436344904889461591">"بلوتوث خاموش است"</string> <string name="dnd_is_off" msgid="3185706903793094463">"«مزاحم نشوید» خاموش است"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"قانون خودکاری (<xliff:g id="ID_1">%s</xliff:g>) «مزاحم نشوید» را روشن کرد."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"برنامهای (<xliff:g id="ID_1">%s</xliff:g>) «مزاحم نشوید» را روشن کرد."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"برنامه یا قانون خودکاری، «مزاحم نشوید» را روشن کرد."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"برای خویشگرفت بهتر، از نمایشگر جلو استفاده شود؟"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"برای عکسی عریضتر با وضوح بالاتر، از دوربین عقب استفاده کنید."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ این صفحهنمایش خاموش خواهد شد"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"دستگاه تاشو درحال باز شدن"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"دستگاه تاشو درحال چرخش به اطراف"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 2519d9a3a724..6922fb08194f 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi on pois päältä"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth ei ole käytössä"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Älä häiritse ‑tila on pois päältä"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Automaattinen sääntö otti käyttöön Älä häiritse ‑tilan (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Sovellus otti käyttöön Älä häiritse ‑tilan (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Automaattinen sääntö tai sovellus otti käyttöön Älä häiritse ‑tilan."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Käännä etunäytölle, jotta saat paremman selfien?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Voit ottaa laajemman kuvan korkeammalla resoluutiolla, kun käytät takakameraa."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Tämä näyttö sammutetaan"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Taitettava laite taitetaan"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Taitettava laite käännetään ympäri"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index f11227ba6350..36453f80c05e 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Le Wi-Fi est désactivé"</string> <string name="bt_is_off" msgid="7436344904889461591">"Le Bluetooth est désactivé"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Le mode Ne pas déranger est désactivé"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Le mode Ne pas déranger a été activé par une règle automatique (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Le mode Ne pas déranger a été activé par une application (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Le mode Ne pas déranger a été activé par une règle automatique ou une application."</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index cec4476973f7..61ac4c41aca8 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -120,7 +120,7 @@ <string name="accessibility_menu" msgid="2701163794470513040">"Menu"</string> <string name="accessibility_accessibility_button" msgid="4089042473497107709">"Accessibilité"</string> <string name="accessibility_rotate_button" msgid="1238584767612362586">"Faire pivoter l\'écran"</string> - <string name="accessibility_recent" msgid="901641734769533575">"Aperçu"</string> + <string name="accessibility_recent" msgid="901641734769533575">"Récents"</string> <string name="accessibility_camera_button" msgid="2938898391716647247">"Appareil photo"</string> <string name="accessibility_phone_button" msgid="4256353121703100427">"Téléphoner"</string> <string name="accessibility_voice_assist_button" msgid="6497706615649754510">"Assistance vocale"</string> @@ -308,7 +308,7 @@ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Caméra accessible"</string> <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Micro et caméra accessibles"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Autre appareil"</string> - <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activer/Désactiver l\'aperçu"</string> + <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activer/Désactiver l\'écran Récents"</string> <string name="zen_priority_introduction" msgid="3159291973383796646">"Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes, des rappels, des événements et des appels des contacts de votre choix. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux."</string> <string name="zen_alarms_introduction" msgid="3987266042682300470">"Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux."</string> <string name="zen_priority_customize_button" msgid="4119213187257195047">"Personnaliser"</string> @@ -447,14 +447,14 @@ <string name="sound_settings" msgid="8874581353127418308">"Son et vibreur"</string> <string name="volume_panel_dialog_settings_button" msgid="2513228491513390310">"Paramètres"</string> <string name="screen_pinning_title" msgid="9058007390337841305">"L\'application est épinglée"</string> - <string name="screen_pinning_description" msgid="8699395373875667743">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, appuyez de manière prolongée sur les boutons Retour et Aperçu."</string> + <string name="screen_pinning_description" msgid="8699395373875667743">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, appuyez de manière prolongée sur les boutons Retour et Récents."</string> <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, appuyez de manière prolongée sur les boutons Retour et Accueil."</string> <string name="screen_pinning_description_gestural" msgid="7246323931831232068">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, balayez-la vers le haut et gardez le doigt appuyé."</string> - <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, appuyez de manière prolongée sur le bouton Aperçu."</string> + <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, appuyez de manière prolongée sur le bouton Récents."</string> <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"Elle restera visible jusqu\'à ce que vous la retiriez. Pour la retirer, appuyez de manière prolongée sur le bouton Accueil."</string> <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"Des données à caractère personnel, comme des contacts et le contenu d\'e-mails, peuvent être accessibles."</string> <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"D\'autres applications peuvent être ouvertes depuis une application épinglée."</string> - <string name="screen_pinning_toast" msgid="8177286912533744328">"Pour que l\'appli ne soit plus épinglée, appuyez de manière prolongée sur les boutons Retour et Aperçu"</string> + <string name="screen_pinning_toast" msgid="8177286912533744328">"Pour que l\'appli ne soit plus épinglée, appuyez de manière prolongée sur les boutons Retour et Récents"</string> <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"Pour que l\'appli ne soit plus épinglée, appuyez de manière prolongée sur les boutons Retour et Accueil"</string> <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"Pour que l\'appli ne soit plus épinglée, balayez-la vers le haut et maintenez le doigt appuyé"</string> <string name="screen_pinning_positive" msgid="3285785989665266984">"OK"</string> @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi désactivé"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth désactivé"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Mode \"Ne pas déranger\" désactivé"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Le mode \"Ne pas déranger\" a été activé par une règle automatique (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Le mode \"Ne pas déranger\" a été activé par une application (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Le mode \"Ne pas déranger\" a été activé par une règle automatique ou une application."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Passer à l\'écran frontal pour un meilleur selfie ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilisez la caméra arrière pour prendre une photo plus large avec une résolution supérieure."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Cet écran sera désactivé"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Appareil pliable qui est déplié"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Appareil pliable qui est retourné"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index ee77418213b9..249a78316df7 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"A wifi está desactivada"</string> <string name="bt_is_off" msgid="7436344904889461591">"O Bluetooth está desactivado"</string> <string name="dnd_is_off" msgid="3185706903793094463">"O modo Non molestar está desactivado"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Unha norma automática (<xliff:g id="ID_1">%s</xliff:g>) activou o modo Non molestar."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Unha aplicación (<xliff:g id="ID_1">%s</xliff:g>) activou o modo Non molestar."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Unha aplicación ou norma automática activou o modo Non molestar."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Usar a cámara dianteira para unha autofoto mellor?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Usa a cámara traseira para sacar unha foto máis ampla e con maior resolución."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Desactivarase esta pantalla"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo pregable abríndose"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo pregable xirando"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 94d3566a6652..89594425074a 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"વાઇ-ફાઇ બંધ છે"</string> <string name="bt_is_off" msgid="7436344904889461591">"બ્લૂટૂથ બંધ છે"</string> <string name="dnd_is_off" msgid="3185706903793094463">"ખલેલ પાડશો નહીં બંધ છે"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"ખલેલ પાડશો નહીં એક સ્વચાલિત નિયમ દ્વારા ચાલુ કરાયું હતું (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"ખલેલ પાડશો નહીં એક ઍપ્લિકેશન દ્વારા ચાલુ કરાયું હતું (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ખલેલ પાડશો નહીં એક સ્વચાલિત નિયમ અથવા ઍપ્લિકેશન દ્વારા ચાલુ કરાયું હતું."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"બહેતર સેલ્ફી લેવા ફ્રન્ટ ડિસ્પ્લે પર ફ્લિપ કરીએ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"વધુ ઉચ્ચ રિઝોલ્યુશનવાળો વિશાળ ફોટો લેવા માટે પાછલા કૅમેરાનો ઉપયોગ કરો."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ આ સ્ક્રીન બંધ થઈ જશે"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ફોલ્ડ કરી શકાય એવું ડિવાઇસ અનફોલ્ડ કરવામાં આવી રહ્યું છે"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ફોલ્ડ કરી શકાય એવું ડિવાઇસ ફ્લિપ કરવામાં આવી રહ્યું છે"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index a3a7ebf257c4..c39563ee7003 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"वाई-फ़ाई बंद है"</string> <string name="bt_is_off" msgid="7436344904889461591">"ब्लूटूथ बंद है"</string> <string name="dnd_is_off" msgid="3185706903793094463">"परेशान न करें बंद है"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"एक ऑटोमैटिक नियम (<xliff:g id="ID_1">%s</xliff:g>) ने परेशान न करें को चालू कर दिया था."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"एक ऐप्लिकेशन (<xliff:g id="ID_1">%s</xliff:g>) ने परेशान न करें को चालू कर दिया था."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"एक ऑटोमैटिक नियम या ऐप्लिकेशन ने परेशान न करें को चालू कर दिया था."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"बेहतर सेल्फ़ी के लिए फ़्रंट डिसप्ले पर स्विच करें?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"वाइड ऐंगल में हाई रिज़ॉल्यूशन वाली फ़ोटो लेने के लिए, पीछे का कैमरा इस्तेमाल करें."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ यह स्क्रीन बंद हो जाएगी"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फ़ोल्ड किया जा सकने वाला डिवाइस अनफ़ोल्ड किया जा रहा है"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फ़ोल्ड किया जा सकने वाला डिवाइस पलटा जा रहा है"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index e98b4b6dd2cb..920869be5b2a 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi je isključen"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth je isključen"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Način Ne uznemiravaj isključen"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Način Ne uznemiravaj uključilo je automatsko pravilo (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Način Ne uznemiravaj uključila je aplikacija (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Način Ne uznemiravaj uključilo je automatsko pravilo ili aplikacija."</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 326582aab5b7..77d5799320bd 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"A Wi-Fi ki van kapcsolva"</string> <string name="bt_is_off" msgid="7436344904889461591">"A Bluetooth ki van kapcsolva"</string> <string name="dnd_is_off" msgid="3185706903793094463">"A „Ne zavarjanak” mód ki van kapcsolva"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Az egyik automatikus szabály (<xliff:g id="ID_1">%s</xliff:g>) bekapcsolta a „Ne zavarjanak” módot."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Az egyik alkalmazás (<xliff:g id="ID_1">%s</xliff:g>) bekapcsolta a „Ne zavarjanak” módot."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Az egyik alkalmazás vagy automatikus szabály bekapcsolta a „Ne zavarjanak” módot."</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index a393968df16e..6c770d37cf88 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi-ն անջատված է"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth-ն անջատված է"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Չանհանգստացնելու ռեժիմն անջատված է"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Չանհանգստացնել գործառույթը միացված է ավտոմատ կանոնի կողմից (<xliff:g id="ID_1">%s</xliff:g>):"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Չանհանգստացնել գործառույթը միացված է հավելվածի կողմից (<xliff:g id="ID_1">%s</xliff:g>):"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Չանհանգստացնել գործառույթը միացված է ավտոմատ կանոնի կամ հավելվածի կողմից:"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 6c523415525c..3bbcc82b0e70 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi nonaktif"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth nonaktif"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Fitur Jangan Ganggu nonaktif"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Mode Jangan Ganggu diaktifkan oleh aturan otomatis (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Mode Jangan Ganggu diaktifkan oleh aplikasi (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Mode Jangan Ganggu diaktifkan oleh aturan otomatis atau aplikasi."</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 0cf4542d0c19..a42f42ec2bb3 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Slökkt á Wi-Fi"</string> <string name="bt_is_off" msgid="7436344904889461591">"Slökkt á Bluetooth"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Slökkt á „Ónáðið ekki“"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Sjálfvirk regla kveikti á „Ónáðið ekki“ (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Forrit kveikti á „Ónáðið ekki“ (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Sjálfvirk regla eða forrit kveikti á „Ónáðið ekki“"</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Snúa á framskjá til að ná betri sjálfsmynd?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Notaðu aftari myndavélina til að ná víðara sjónarhorni með meiri upplausn."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Slökkt verður á þessum skjá"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Samanbrjótanlegt tæki opnað"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Samanbrjótanlegu tæki snúið við"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 7fb1e4dfb0da..8e0efa865093 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi disattivato"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth non attivo"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Funzione Non disturbare disattivata"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"La funzione Non disturbare è stata attivata da una regola automatica (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"La funzione Non disturbare è stata attivata da un\'app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"La funzione Non disturbare è stata attivata da una regola automatica o da un\'app."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Girare su display frontale per un selfie migliore?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilizza la fotocamera posteriore per una foto più ampia con maggiore risoluzione."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Questo schermo verrà disattivato"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo pieghevole che viene aperto"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo pieghevole che viene capovolto"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 0c140cf46ba2..5f74a57ad425 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi כבוי"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth כבוי"</string> <string name="dnd_is_off" msgid="3185706903793094463">"מצב \'נא לא להפריע\' כבוי"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"מצב \'נא לא להפריע\' הופעל על ידי כלל אוטומטי (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"מצב \'נא לא להפריע\' הופעל על ידי אפליקציה (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"מצב \'נא לא להפריע\' הופעל על ידי אפליקציה או על ידי כלל אוטומטי."</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 8617a5d0789f..485161f85a9a 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi は OFF です"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth は OFF です"</string> <string name="dnd_is_off" msgid="3185706903793094463">"サイレント モードは OFF です"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"サイレント モードが自動ルール(<xliff:g id="ID_1">%s</xliff:g>)によって ON になりました。"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"サイレント モードがアプリ(<xliff:g id="ID_1">%s</xliff:g>)によって ON になりました。"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"サイレント モードが自動ルールまたはアプリによって ON になりました。"</string> @@ -1002,8 +1004,7 @@ <string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• カメラアプリをインストールする"</string> <string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• アプリが設定されている"</string> <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• 利用できるデバイスが 1 台以上ある"</string> - <!-- no translation found for keyguard_affordance_press_too_short (2687995216454987952) --> - <skip /> + <string name="keyguard_affordance_press_too_short" msgid="2687995216454987952">"有効にするには長押ししてください"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"キャンセル"</string> <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"切り替えましょう"</string> <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"高画質で撮るにはスマートフォンを開いてください"</string> @@ -1012,6 +1013,5 @@ <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱この画面は OFF になります"</b></string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"折りたたみ式デバイスが広げられている"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"折りたたみ式デバイスがひっくり返されている"</string> - <!-- no translation found for stylus_battery_low (7134370101603167096) --> - <skip /> + <string name="stylus_battery_low" msgid="7134370101603167096">"タッチペンのバッテリー残量が少なくなっています"</string> </resources> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 799b199114b8..f9e9b136bf26 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi გამორთულია"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth გამორთულია"</string> <string name="dnd_is_off" msgid="3185706903793094463">"„არ შემაწუხოთ“ რეჟიმი გამორთულია"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"„არ შემაწუხოთ“ ჩაირთო ავტომატური წესის მიხედვით (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"„არ შემაწუხოთ“ ჩაირთო აპის მიერ (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"„არ შემაწუხოთ“ ჩაირთო ავტომატური წესის მიხედვით ან აპის მიერ."</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 2419213e7778..8619a95e4f53 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi өшірулі"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth өшірулі"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Мазаламау режимі өшірулі"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Мазаламау режимі (<xliff:g id="ID_1">%s</xliff:g>) автоматты ережесі арқылы қосылды."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Мазаламау режимі (<xliff:g id="ID_1">%s</xliff:g>) қолданбасы арқылы қосылды."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Мазаламау режимі автоматты ереже немесе қолданба арқылы қосылды."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Жақсырақ селфи үшін алдыңғы экранға ауысасыз ба?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Ажыратымдылығы жоғары кеңірек фотосурет түсіру үшін артқы камераны пайдаланыңыз."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Бұл экран өшіріледі."</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Бүктемелі құрылғы ашылып жатыр."</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Бүктемелі құрылғы аударылып жатыр."</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 9d862376608a..6914431070a8 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi បានបិទ"</string> <string name="bt_is_off" msgid="7436344904889461591">"ប៊្លូធូសបានបិទ"</string> <string name="dnd_is_off" msgid="3185706903793094463">"មុខងារកុំរំខានបានបិទ"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"មុខងារកុំរំខានត្រូវបានបើកដោយច្បាប់ស្វ័យប្រវត្តិ (<xliff:g id="ID_1">%s</xliff:g>)។"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"មុខងារកុំរំខានត្រូវបានបើកដោយកម្មវិធី (<xliff:g id="ID_1">%s</xliff:g>)។"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"មុខងារកុំរំខានត្រូវបានបើកដោយច្បាប់ស្វ័យប្រវត្តិ ឬកម្មវិធី។"</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ត្រឡប់ទៅផ្ទាំងអេក្រង់ខាងមុខ ដើម្បីថតសែលហ្វីកាន់តែបានល្អឬ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ប្រើកាមេរ៉ាខាងក្រោយ ដើម្បីទទួលបានរូបថតកាន់តែធំជាមួយនឹងកម្រិតគុណភាពកាន់តែខ្ពស់។"</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ អេក្រង់នេះនឹងបិទ"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ឧបករណ៍អាចបត់បានកំពុងត្រូវបានលា"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ឧបករណ៍អាចបត់បានកំពុងត្រូវបានលា"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 49390db69c50..2691a70d8795 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"ವೈ-ಫೈ ಆಫ್ ಆಗಿದೆ"</string> <string name="bt_is_off" msgid="7436344904889461591">"ಬ್ಲೂಟೂತ್ ಆಫ್ ಆಗಿದೆ"</string> <string name="dnd_is_off" msgid="3185706903793094463">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆಫ್ ಆಗಿದೆ"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"(<xliff:g id="ID_1">%s</xliff:g>) ಸ್ವಯಂಚಾಲಿತ ನಿಯಮದ ಮೂಲಕ ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್ ಆಗಿದೆ."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"(<xliff:g id="ID_1">%s</xliff:g>) ಅಪ್ಲಿಕೇಶನ್ ಮೂಲಕ ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್ ಆಗಿದೆ."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ಸ್ವಯಂಚಾಲಿತ ನಿಯಮ ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ ಮೂಲಕ ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್ ಆಗಿದೆ."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ಉತ್ತಮ ಸೆಲ್ಫೀಗಾಗಿ ಮುಂಭಾಗದ ಕ್ಯಾಮರಾಗೆ ಫ್ಲಿಪ್ ಮಾಡಬೇಕೆ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ಹೆಚ್ಚಿನ ರೆಸಲ್ಯೂಷನ್ ಹೊಂದಿರುವ ವಿಶಾಲವಾದ ಫೋಟೋಗಾಗಿ ಹಿಂಭಾಗದ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸಿ."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ಈ ಸ್ಕ್ರೀನ್ ಆಫ್ ಆಗುತ್ತದೆ"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ಫೋಲ್ಡ್ ಮಾಡಬಹುದಾದ ಸಾಧನವನ್ನು ಅನ್ಫೋಲ್ಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ಫೋಲ್ಡ್ ಮಾಡಬಹುದಾದ ಸಾಧನವನ್ನು ಸುತ್ತಲೂ ತಿರುಗಿಸಲಾಗುತ್ತಿದೆ"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 3457a844d52e..f3f042609eed 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi가 사용 중지됨"</string> <string name="bt_is_off" msgid="7436344904889461591">"블루투스가 사용 중지됨"</string> <string name="dnd_is_off" msgid="3185706903793094463">"방해 금지 모드가 사용 중지됨"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"방해 금지 모드가 자동 규칙(<xliff:g id="ID_1">%s</xliff:g>)에 의해 사용 설정되었습니다."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"방해 금지 모드가 앱(<xliff:g id="ID_1">%s</xliff:g>)에 의해 사용 설정되었습니다."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"방해 금지 모드가 자동 규칙 또는 앱에 의해 사용 설정되었습니다."</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 4bd1695c0aec..6f64f45080a4 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi өчүк"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth өчүк"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\"Тынчымды алба\" режими өчүк"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Автоматтык эреже \"Тынчымды алба\" режимин күйгүздү (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Колдонмо \"Тынчымды алба\" режимин күйгүздү (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Автоматтык эреже же колдонмо \"Тынчымды алба\" режимин күйгүздү."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Жакшы селфи тартуу үчүн маңдайкы экранга которосузбу?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Кең жана жогорку дааналыктагы сүрөттү тартуу үчүн негизги камераны колдонуңуз."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Бул экран өчөт"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ачылып турган бүктөлмө түзмөк"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Оодарылып жаткан бүктөлмө түзмөк"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 750fa7ebc42c..8573f69618a5 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ປິດຢູ່"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth ປິດຢູ່"</string> <string name="dnd_is_off" msgid="3185706903793094463">"ຫ້າມລົບກວນ ປິດຢູ່"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"ໂໝດຫ້າມລົບກວນຖືກເປີດໃຊ້ໂດຍກົດອັດຕະໂນມັດ (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"ມີແອັບເປີດໃຊ້ໂໝດຫ້າມລົບກວນ (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ໂໝດຫ້າມລົບກວນຖືກເປີດໃຊ້ໂດຍກົດອັດຕະໂນມັດ ຫຼື ແອັບໃດໜຶ່ງ."</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 013ab719b456..3af4eb0995bb 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"„Wi-Fi“ išjungtas"</string> <string name="bt_is_off" msgid="7436344904889461591">"„Bluetooth“ išjungtas"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Netrukdymo režimas išjungtas"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Netrukdymo režimą įjungė automatinė taisyklė (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Netrukdymo režimą įjungė programa (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Netrukdymo režimą įjungė automatinė taisyklė arba programa."</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 7c75e6a63533..cec24a47ead5 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ir izslēgts"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth ir izslēgts"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Režīms “Netraucēt” ir izslēgts"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Režīmu “Netraucēt” ieslēdza automātiska kārtula (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Režīmu “Netraucēt” ieslēdza lietotne (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Režīmu “Netraucēt” ieslēdza automātiska kārtula vai lietotne."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Vai apvērst uz priekšējo kameru labākai pašbildei?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Lai uzņemtu platāku fotoattēlu ar augstāku izšķirtspēju, izmantojiet aizmugurējo kameru."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Šis ekrāns tiks izslēgts."</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Salokāma ierīce tiek atlocīta"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Salokāma ierīce tiek apgriezta"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 6f0302631a39..fff051b2148b 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi е исклучено"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth е исклучен"</string> <string name="dnd_is_off" msgid="3185706903793094463">"„Не вознемирувај“ е исклучено"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Едно автоматско правило (<xliff:g id="ID_1">%s</xliff:g>) ја вклучи „Не вознемирувај“."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Една апликација (<xliff:g id="ID_1">%s</xliff:g>) ја вклучи „Не вознемирувај“."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Едно автоматско правило или апликација ја вклучи „Не вознемирувај“."</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 74e5d06f0e96..6f521024409a 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"വൈഫൈ ഓഫാണ്"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth ഓഫാണ്"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\'ശല്യപ്പെടുത്തരുത്\' ഓഫാണ്"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"സ്വയമേവയുള്ള ഒരു നയം (<xliff:g id="ID_1">%s</xliff:g>) \'ശല്യപ്പെടുത്തരുത്\' ഓണാക്കിയിരിക്കുന്നു."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"ഒരു ആപ്പ് (<xliff:g id="ID_1">%s</xliff:g>) \'ശല്യപ്പെടുത്തരുത്\' ഓണാക്കിയിരിക്കുന്നു."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"സ്വയമേവയുള്ള ഒരു നയമോ ആപ്പോ \'ശല്യപ്പെടുത്തരുത്\' ഓണാക്കിയിരിക്കുന്നു."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"മികച്ച സെൽഫിക്ക് ഫ്രണ്ട് ഡിസ്പ്ലേയിലേക്ക് മാറണോ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ഉയർന്ന റെസല്യൂഷൻ ഉള്ള, വീതി കൂടിയ ഫോട്ടോയ്ക്ക്, പിൻഭാഗത്തെ ക്യാമറ ഉപയോഗിക്കുക."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ഈ സ്ക്രീൻ ഓഫാകും"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ഫോൾഡ് ചെയ്യാവുന്ന ഉപകരണം അൺഫോൾഡ് ആകുന്നു"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ഫോൾഡ് ചെയ്യാവുന്ന ഉപകരണം, കറങ്ങുന്ന വിധത്തിൽ ഫ്ലിപ്പ് ആകുന്നു"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 69f6c09ac434..0540abfd487f 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi унтраалттай байна"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth унтраалттай байна"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Бүү саад бол горим унтраалттай байна"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Автомат дүрэм (<xliff:g id="ID_1">%s</xliff:g>) Бүү саад бол горимыг асаасан."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Апп (<xliff:g id="ID_1">%s</xliff:g>) Бүү саад бол горимыг асаасан."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Автомат дүрэм эсвэл апп Бүү саад бол горимыг асаасан."</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index efcbc9b10ffb..2a33bc17428f 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"वाय-फाय बंद आहे"</string> <string name="bt_is_off" msgid="7436344904889461591">"ब्लूटूथ बंद आहे"</string> <string name="dnd_is_off" msgid="3185706903793094463">"व्यत्यय आणू नका बंद आहे"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"व्यत्यय आणू नका एका <xliff:g id="ID_1">%s</xliff:g> स्वयंचलित नियमाने सुरू केले."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"व्यत्यय आणू नका (<xliff:g id="ID_1">%s</xliff:g>) ॲपने सुरू केले."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"व्यत्यय आणू नका एका स्वयंचलित नियमाने किंवा ॲपने सुरू केले."</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index a8afbae15dbd..b595d397c66d 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi dimatikan"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth dimatikan"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Jangan Ganggu dimatikan"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Jangan Ganggu dihidupkan oleh peraturan automatik (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Jangan Ganggu dihidupkan oleh apl (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Jangan Ganggu dihidupkan oleh peraturan automatik atau apl."</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 4e46ec02958a..627dd7757f62 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ပိတ်ထားသည်"</string> <string name="bt_is_off" msgid="7436344904889461591">"ဘလူးတုသ်ကို ပိတ်ထားသည်"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\"မနှောင့်ယှက်ရ\" ကို ပိတ်ထားသည်"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"\"မနှောင့်ယှက်ရ\" ကို အလိုအလျောက်စည်းမျဉ်း (<xliff:g id="ID_1">%s</xliff:g>) က ဖွင့်ခဲ့သည်။"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"\"မနှောင့်ယှက်ရ\" ကို အက်ပ် (<xliff:g id="ID_1">%s</xliff:g>) က ဖွင့်ခဲ့သည်။"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"\"မနှောင့်ယှက်ရ\" ကို အလိုအလျောက်စည်းမျဉ်းတစ်ခု သို့မဟုတ် အက်ပ်တစ်ခုက ဖွင့်ခဲ့သည်။"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index d5258e099318..8dbdd2f1394c 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wifi er av"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth er av"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Ikke forstyrr er av"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Ikke forstyrr ble slått på av en automatisk regel (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Ikke forstyrr ble slått på av en app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Ikke forstyrr ble slått på av en automatisk regel eller en app."</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 123cce08d403..00e52a160ea8 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi‑Fi अफ छ"</string> <string name="bt_is_off" msgid="7436344904889461591">"ब्लुटुथ निष्क्रिय छ"</string> <string name="dnd_is_off" msgid="3185706903793094463">"बाधा नपुर्याउनुहोस् नामक विकल्प निष्क्रिय छ"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"कुनै स्वचालित नियमले बाधा नपुऱ्याउनुहोस् नामक विकल्पलाई सक्रियो गऱ्यो (<xliff:g id="ID_1">%s</xliff:g>)।"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"कुनै अनुप्रयोगले बाधा नपुऱ्याउनुहोस् नामक विकल्पलाई सक्रिय गऱ्यो (<xliff:g id="ID_1">%s</xliff:g>)।"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"कुनै स्वचालित नियम वा अनुप्रयोगले बाधा नपुऱ्याउनुहोस् नामक विकल्पलाई सक्रिय गऱ्यो।"</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"अझ राम्रो सेल्फी खिच्न फ्लिप गरी अगाडिपट्टिको डिस्प्ले प्रयोग गर्ने हो?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"अझ बढी रिजोल्युसन भएको फराकिलो फोटो खिच्न पछाडिपट्टिको क्यामेरा प्रयोग गर्नुहोस्।"</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ यो स्क्रिन अफ हुने छ"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फोल्ड गर्न मिल्ने डिभाइस अनफोल्ड गरेको देखाइएको एनिमेसन"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फोल्ड गर्न मिल्ने डिभाइस यताउता पल्टाएर देखाइएको एनिमेसन"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index d1777b3358b9..61712356bcb7 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wifi staat uit"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth staat uit"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Niet storen staat uit"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Niet storen is aangezet door een automatische regel (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Niet storen is aangezet door een app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Niet storen is aangezet door een automatische regel of app."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Omkeren naar scherm voorkant voor een betere selfie?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Gebruik de camera aan de achterzijde voor een bredere foto met hogere resolutie."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Dit scherm gaat uit"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Opvouwbaar apparaat wordt uitgevouwen"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Opvouwbaar apparaat wordt gedraaid"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 17afa0ccccf4..40b335a62b8c 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"ୱାଇ-ଫାଇ ବନ୍ଦ ଅଛି"</string> <string name="bt_is_off" msgid="7436344904889461591">"ବ୍ଲୁଟୂଥ୍ ଅଫ୍ ଅଛି"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅଫ୍ ଅଛି"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"ଏକ (<xliff:g id="ID_1">%s</xliff:g>) ନିୟମ ଦ୍ୱାରା \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ସ୍ୱଚାଳିତ ଭାବେ ଅନ୍ କରାଗଲା।"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"ଏକ ଆପ୍ (<xliff:g id="ID_1">%s</xliff:g>) ଦ୍ୱାରା \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅନ୍ କରାଗଲା।"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ଏକ ସ୍ୱଚାଳିତ ନିୟମ କିମ୍ବା ଆପ୍ ଦ୍ୱାରା \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅନ୍ କରାଗଲା।"</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ଏକ ଉନ୍ନତ ସେଲ୍ଫି ପାଇଁ ସାମ୍ନା ଡିସପ୍ଲେକୁ ଫ୍ଲିପ କରିବେ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ଉଚ୍ଚ ରିଜୋଲ୍ୟୁସନ ସହ ଅଧିକ ଚଉଡ଼ାର ଏକ ଫଟୋ ନେବା ପାଇଁ ପଛ-ପଟର କେମେରା ବ୍ୟବହାର କରନ୍ତୁ।"</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ଏହି ସ୍କ୍ରିନ ବନ୍ଦ ହୋଇଯିବ"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଅନଫୋଲ୍ଡ କରାଯାଉଛି"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଫ୍ଲିପ କରାଯାଉଛି"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 80c2d2e30e7c..b6d9121a4ec0 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"ਵਾਈ-ਫਾਈ ਬੰਦ ਹੈ"</string> <string name="bt_is_off" msgid="7436344904889461591">"ਬਲੂਟੁੱਥ ਬੰਦ ਹੈ"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਬੰਦ ਹੈ"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"ਸਵੈਚਲਿਤ ਨਿਯਮ (<xliff:g id="ID_1">%s</xliff:g>) ਦੁਆਰਾ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਸੀ।"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"ਐਪ (<xliff:g id="ID_1">%s</xliff:g>) ਵੱਲੋਂ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਸੀ।"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ਇੱਕ ਸਵੈਚਲਿਤ ਨਿਯਮ ਜਾਂ ਐਪ ਵੱਲੋਂ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਸੀ।"</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ਕੀ ਬਿਹਤਰ ਸੈਲਫ਼ੀ ਲਈ ਅਗਲੀ ਡਿਸਪਲੇ \'ਤੇ ਫਲਿੱਪ ਕਰਨਾ ਹੈ?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ਉੱਚ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਾਲੀ ਜ਼ਿਆਦਾ ਚੌੜੀ ਫ਼ੋਟੋ ਲਈ ਪਿਛਲੇ ਕੈਮਰੇ ਦੀ ਵਰਤੋਂ ਕਰੋ।"</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ਇਹ ਸਕ੍ਰੀਨ ਬੰਦ ਹੋ ਜਾਵੇਗੀ"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ਮੋੜਨਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ਮੋੜਨਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਆਲੇ-ਦੁਆਲੇ ਫਲਿੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 45a555b21237..5f71cc69bf81 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi jest wyłączone"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth jest wyłączony"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Tryb Nie przeszkadzać jest wyłączony"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Tryb Nie przeszkadzać został włączony przez regułę automatyczną (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Tryb Nie przeszkadzać został włączony przez aplikację (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Tryb Nie przeszkadzać został włączony przez regułę automatyczną lub aplikację."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Przełączyć na przedni wyświetlacz?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Użyj tylnego aparatu, aby zrobić szersze zdjęcie o większej rozdzielczości."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"* Ekran się wyłączy"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Składane urządzenie jest rozkładane"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Składane urządzenie jest obracane"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 5a712b3971b0..11a4c69b468c 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"O Wi-Fi está desativado"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth desativado"</string> <string name="dnd_is_off" msgid="3185706903793094463">"O recurso Não perturbe está desativado"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"O recurso Não perturbe foi ativado por uma regra automática (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"O recurso Não perturbe foi ativado por um app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"O recurso Não perturbe foi ativado por uma regra automática ou app."</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index bf354b088bd2..30410fd8c2c0 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi desativado"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth desativado"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Não incomodar desativado"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"O modo Não incomodar foi ativado por uma regra automática (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"O modo Não incomodar foi ativado por uma app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"O modo Não incomodar foi ativado por uma regra automática ou por uma app."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Inverter para ecrã frontal para uma selfie melhor?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use a câmara traseira para uma foto mais ampla com uma resolução superior."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Este ecrã vai ser desligado"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo dobrável a ser desdobrado"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo dobrável a ser virado ao contrário"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 5a712b3971b0..11a4c69b468c 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"O Wi-Fi está desativado"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth desativado"</string> <string name="dnd_is_off" msgid="3185706903793094463">"O recurso Não perturbe está desativado"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"O recurso Não perturbe foi ativado por uma regra automática (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"O recurso Não perturbe foi ativado por um app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"O recurso Não perturbe foi ativado por uma regra automática ou app."</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 8fc037381170..86f6205fe5c1 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Conexiunea Wi-Fi este dezactivată"</string> <string name="bt_is_off" msgid="7436344904889461591">"Funcția Bluetooth este dezactivată"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Funcția Nu deranja este dezactivată"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Funcția Nu deranja a fost activată de o regulă automată (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Funcția Nu deranja a fost activată de o aplicație (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Funcția Nu deranja a fost activată de o regulă automată sau de o aplicație."</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index b864dc093a0d..28d5f4097ec0 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Модуль Wi-Fi отключен"</string> <string name="bt_is_off" msgid="7436344904889461591">"Модуль Bluetooth отключен"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Режим \"Не беспокоить\" отключен"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Режим \"Не беспокоить\" был включен специальным правилом (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Режим \"Не беспокоить\" был включен приложением (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Режим \"Не беспокоить\" был включен специальным правилом или приложением."</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 67e74a177e73..f7cdcb10f1f2 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ක්රියා විරහිතයි"</string> <string name="bt_is_off" msgid="7436344904889461591">"බ්ලූටූත් ක්රියා විරහිතයි"</string> <string name="dnd_is_off" msgid="3185706903793094463">"බාධා නොකරන්න ක්රියා විරහිතයි"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"ස්වයංක්රිය රීතියක් මගින් බාධා නොකරන්න ක්රියාත්මක කරන ලදී (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"යෙදුමක් මගින් බාධා නොකරන්න ක්රියාත්මක කරන ලදී (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ස්වයංක්රිය රීතියක් හෝ යෙදුමක් මගින් බාධා නොකරන්න ක්රියාත්මක කරන ලදී."</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 0e47b41247d1..b2586f1458c9 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Pripojenie Wi‑Fi je vypnuté"</string> <string name="bt_is_off" msgid="7436344904889461591">"Rozhranie Bluetooth je vypnuté"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Režim bez vyrušení je vypnutý"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Režim bez vyrušení bol zapnutý automatickým pravidlom (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Režim bez vyrušení bol zapnutý aplikáciou (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Režim bez vyrušení bol zapnutý automatickým pravidlom alebo aplikáciou."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Prevrátiť na pred. obrazovku pre lepšie selfie?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Pomocou zadného fotoaparátu vytvorte širšiu fotku s vyšším rozlíšením."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Táto obrazovka sa vypne"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rozloženie skladacieho zariadenia"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Prevrátenie skladacieho zariadenia"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 0f80a43ecbd5..a52fedeb606d 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi je izklopljen."</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth je izklopljen"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Način »ne moti« je izklopljen"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Samodejno pravilo (<xliff:g id="ID_1">%s</xliff:g>) je vklopilo način »ne moti«."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Aplikacija (<xliff:g id="ID_1">%s</xliff:g>) je vklopila način »ne moti«."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Način »ne moti« je bil vklopljen zaradi samodejnega pravila ali aplikacije."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Obrnite telefon na sprednji zaslon za boljši selfi"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Uporabite hrbtni fotoaparat, da posnamete širšo sliko višje ločljivosti."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ta zaslon se bo izklopil."</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Razpiranje zložljive naprave"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Obračanje zložljive naprave"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 1856e5a989f7..e9ae54a06189 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi është joaktiv"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth-i është joaktiv"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Modaliteti \"Mos shqetëso\" është joaktiv"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Modaliteti \"Mos shqetëso\" është aktivizuar nga një rregull automatik (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Modaliteti \"Mos shqetëso\" është aktivizuar nga një aplikacion (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Modaliteti \"Mos shqetëso\" është aktivizuar nga një rregull automatik ose një aplikacion."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Të kthehet tek ekrani para për selfi më të mirë?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Përdor lenten e kamerës së pasme për një fotografi më të gjerë me rezolucion më të lartë."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ky ekran do të fiket"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Pajisja e palosshme duke u hapur"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Pajisja e palosshme duke u rrotulluar"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 40d38d90daab..f3c3de3a1970 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"WiFi је искључен"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth је искључен"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Режим Не узнемиравај је искључен"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Аутоматско правило (<xliff:g id="ID_1">%s</xliff:g>) је укључило режим Не узнемиравај."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Апликација (<xliff:g id="ID_1">%s</xliff:g>) је укључила режим Не узнемиравај."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Аутоматско правило или апликација су укључили режим Не узнемиравај."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Желите да обрнете на предњи екран за бољи селфи?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Користите задњу камеру да бисте снимили ширу слику са вишом резолуцијом."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Овај екран ће се искључити"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Уређај на преклоп се отвара"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Уређај на преклоп се обрће"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 3ab7c4b8f9dd..ae40b7bdea19 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"wifi är inaktiverat"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth är inaktiverat"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Stör ej är inaktiverat"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Stör ej aktiverades via en automatisk regel (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Stör ej aktiverades via en app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Stör ej aktiverades via en automatisk regel eller en app."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Vill du ta en bättre selfie med främre skärmen?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Använd den bakre kameran för att ta ett mer vidsträckt foto med högre upplösning."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Den här skärmen inaktiveras"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"En vikbar enhet viks upp"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"En vikbar enhet vänds"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index e269b6107e3f..f13afb8331da 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi imezimwa"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth imezimwa"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Kipengele cha Usinisumbue kimezimwa"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Kipengele cha Usinisumbue kimewashwa na sheria ya kiotomatiki <xliff:g id="ID_1">%s</xliff:g>."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Kipengele cha usinisumbue kimewashwa na programu (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Kipengele cha Usinisumbue kimewashwa na sheria ya kiotomatiki au programu."</string> @@ -872,8 +874,7 @@ <string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Acha kutuma"</string> <string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Vifaa vya kutoa sauti vilivyopo"</string> <string name="media_output_dialog_accessibility_seekbar" msgid="5332843993805568978">"Sauti"</string> - <!-- no translation found for media_output_dialog_volume_percentage (1613984910585111798) --> - <skip /> + <string name="media_output_dialog_volume_percentage" msgid="1613984910585111798">"<xliff:g id="PERCENTAGE">%1$d</xliff:g>%%"</string> <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Jinsi utangazaji unavyofanya kazi"</string> <string name="media_output_broadcast" msgid="3555580945878071543">"Tangaza"</string> <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Watu walio karibu nawe wenye vifaa oanifu vya Bluetooth wanaweza kusikiliza maudhui unayoyatangaza"</string> @@ -987,8 +988,7 @@ <string name="dream_overlay_status_bar_camera_mic_off" msgid="3199425257833773569">"Kamera na maikrofoni zimezimwa"</string> <string name="dream_overlay_status_bar_notification_indicator" msgid="8091389255691081711">"{count,plural, =1{Arifa #}other{Arifa #}}"</string> <string name="dream_overlay_weather_complication_desc" msgid="824503662089783824">"<xliff:g id="WEATHER_CONDITION">%1$s</xliff:g>, <xliff:g id="TEMPERATURE">%2$s</xliff:g>"</string> - <!-- no translation found for note_task_button_label (8718616095800343136) --> - <skip /> + <string name="note_task_button_label" msgid="8718616095800343136">"Kuandika vidokezo"</string> <string name="broadcasting_description_is_broadcasting" msgid="765627502786404290">"Inaarifu"</string> <string name="bt_le_audio_broadcast_dialog_title" msgid="3605428497924077811">"Ungependa kusimamisha utangazaji kwenye <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string> <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="7889684551194225793">"Ikiwa unatangaza kwenye <xliff:g id="SWITCHAPP">%1$s</xliff:g> au unabadilisha maudhui, tangazo lako la sasa litasimamishwa"</string> @@ -1012,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Ungependa kugeuza skrini ya mbele ili upige selfi?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Tumia kamera ya nyuma ili upige picha pana iliyo na ubora wa juu."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Skrini hii itajizima"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Kifaa kinachokunjwa kikikunjuliwa"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Kifaa kinachokunjwa kikigeuzwa"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index fccd886cf458..ef01766d24d4 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"வைஃபை முடக்கத்தில் உள்ளது"</string> <string name="bt_is_off" msgid="7436344904889461591">"புளூடூத் முடக்கத்தில் உள்ளது"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\"தொந்தரவு செய்ய வேண்டாம்\" முடக்கத்தில் உள்ளது"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"\"தொந்தரவு செய்ய வேண்டாம்\" எனும் பயன்முறையை, தானியங்கு விதி (<xliff:g id="ID_1">%s</xliff:g>) இயக்கியுள்ளது."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"\"தொந்தரவு செய்ய வேண்டாம்\" எனும் பயன்முறையை, ஆப்ஸ் (<xliff:g id="ID_1">%s</xliff:g>) இயக்கியுள்ளது."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"\"தொந்தரவு செய்ய வேண்டாம்\" எனும் பயன்முறையை, தானியங்கு விதி அல்லது ஆப்ஸ் இயக்கியுள்ளது."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"சிறந்த செல்ஃபிக்கு முன்புற டிஸ்பிளேவிற்கு மாற்றவா?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"அதிகத் தெளிவுத்திறனுடன் அகலக் கோணத்தில் படத்தை எடுப்பதற்குப் பின்பக்கக் கேமராவைப் பயன்படுத்துங்கள்."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ இந்தத் திரை ஆஃப் ஆகிவிடும்"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"மடக்கத்தக்க சாதனம் திறக்கப்படுகிறது"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"மடக்கத்தக்க சாதனம் ஃபிளிப் செய்யப்பட்டு திருப்பப்படுகிறது"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index ca260edd51c5..2a2bba5ab92e 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ఆఫ్లో ఉంది"</string> <string name="bt_is_off" msgid="7436344904889461591">"బ్లూటూత్ ఆఫ్లో ఉంది"</string> <string name="dnd_is_off" msgid="3185706903793094463">"అంతరాయం కలిగించవద్దు ఆఫ్లో ఉంది"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"ఆటోమేటిక్ నియమం (<xliff:g id="ID_1">%s</xliff:g>) ద్వారా అంతరాయం కలిగించవద్దు ఆన్ చేయబడింది."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"యాప్ (<xliff:g id="ID_1">%s</xliff:g>) ద్వారా అంతరాయం కలిగించవద్దు ఆన్ చేయబడింది."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"ఆటోమేటిక్ నియమం లేదా యాప్ ద్వారా అంతరాయం కలిగించవద్దు ఆన్ చేయబడింది."</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 0caba4d9983e..736bd6827918 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi ปิดอยู่"</string> <string name="bt_is_off" msgid="7436344904889461591">"บลูทูธปิดอยู่"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\"ห้ามรบกวน\" ปิดอยู่"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"มีการเปิด \"ห้ามรบกวน\" โดยกฎอัตโนมัติ (<xliff:g id="ID_1">%s</xliff:g>)"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"มีการเปิด \"ห้ามรบกวน\" โดยแอป (<xliff:g id="ID_1">%s</xliff:g>)"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"มีการเปิด \"ห้ามรบกวน\" โดยกฎอัตโนมัติหรือแอป"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 78cb17ab59e8..51e42dd602a7 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Naka-off ang Wi-Fi"</string> <string name="bt_is_off" msgid="7436344904889461591">"Naka-off ang Bluetooth"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Naka-off ang Huwag Istorbohin"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Na-on ang Huwag Istorbohin dahil sa isang awtomatikong panuntunan (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Na-on ang Huwag Istorbohin dahil sa isang app (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Na-on ang Huwag Istorbohin dahil sa isang awtomatikong panuntunan o app."</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 6f8f055be0c5..bb718ffd19ed 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Kablosuz bağlantı kapalı"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth kapalı"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Rahatsız Etmeyin kapalı"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Rahatsız Etmeyin ayarı bir otomatik kural (<xliff:g id="ID_1">%s</xliff:g>) tarafından açıldı."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Rahatsız Etmeyin ayarı bir uygulama (<xliff:g id="ID_1">%s</xliff:g>) tarafından açıldı."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Rahatsız Etmeyin ayarı bir otomatik kural veya uygulama tarafından açıldı."</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index cf062d84d4ce..4e3051527778 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi вимкнено"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth вимкнено"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Режим \"Не турбувати\" вимкнено"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Автоматичне правило ввімкнуло режим \"Не турбувати\" (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Додаток увімкнув режим \"Не турбувати\" (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Автоматичне правило або додаток увімкнули режим \"Не турбувати\"."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Перемкнути на фронтальну камеру для кращого селфі?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Використовуйте камеру на задній панелі, щоб зробити знімок із ширшим кутом і вищою роздільною здатністю."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Цей екран вимкнеться"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Розкладний пристрій у розкладеному стані"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Розкладний пристрій обертається"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 97fce68ac63e..8b249ca37116 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi آف ہے"</string> <string name="bt_is_off" msgid="7436344904889461591">"بلوٹوتھ آف ہے"</string> <string name="dnd_is_off" msgid="3185706903793094463">"\'ڈسٹرب نہ کریں\' آف ہے"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"\'ڈسٹرب نہ کریں\' کسی خودکار اصول (<xliff:g id="ID_1">%s</xliff:g>) کے ذریعہ آن ہو گیا تھا۔"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"\'ڈسٹرب نہ کریں\' کسی ایپ (<xliff:g id="ID_1">%s</xliff:g>) کے ذریعہ آن ہو گیا تھا۔"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"\'ڈسٹرب نہ کریں\' کسی خودکار اصول یا ایپ کے ذریعے آن ہو گیا تھا۔"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index a063081fd2eb..74f29e523352 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi o‘chiq"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth o‘chiq"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Bezovta qilinmasin rejimi o‘chiq"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Bezovta qilinmasin rejimi avtomatik qoida (<xliff:g id="ID_1">%s</xliff:g>) tomonidan yoqilgan."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Bezovta qilinmasin rejimi ilova (<xliff:g id="ID_1">%s</xliff:g>) tomonidan yoqilgan."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Bezovta qilinmasin rejimi ilova yoki avtomatik qoida tomonidan yoqilgan."</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 711fcb63d0cd..94c814cc526f 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi đang tắt"</string> <string name="bt_is_off" msgid="7436344904889461591">"Bluetooth tắt"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Không làm phiền tắt"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Không làm phiền đã được một quy tắc tự động (<xliff:g id="ID_1">%s</xliff:g>) bật."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Không làm phiền đã được một ứng dụng (<xliff:g id="ID_1">%s</xliff:g>) bật."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Không làm phiền đã được một quy tắc tự động hoặc ứng dụng bật."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Lật sang màn hình ngoài để tự chụp ảnh chân dung đẹp hơn?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Sử dụng máy ảnh sau để chụp ảnh góc rộng hơn với độ phân giải cao hơn."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Màn hình này sẽ tắt"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Thiết bị có thể gập lại đang được mở ra"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Thiết bị có thể gập lại đang được lật ngược"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index b52c9a4a0bf6..082cfb4fc896 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"WLAN 已关闭"</string> <string name="bt_is_off" msgid="7436344904889461591">"蓝牙已关闭"</string> <string name="dnd_is_off" msgid="3185706903793094463">"“勿扰”模式已关闭"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"某个自动规则(<xliff:g id="ID_1">%s</xliff:g>)已开启勿扰模式。"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"某个应用(<xliff:g id="ID_1">%s</xliff:g>)已开启勿扰模式。"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"某个自动规则或应用已开启勿扰模式。"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 8edf32bfe98b..092fe349fd72 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi 已關閉"</string> <string name="bt_is_off" msgid="7436344904889461591">"藍牙已關閉"</string> <string name="dnd_is_off" msgid="3185706903793094463">"「請勿騷擾」已關閉"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"「<xliff:g id="ID_1">%s</xliff:g>」自動規則已開啟「請勿騷擾」功能。"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"「<xliff:g id="ID_1">%s</xliff:g>」應用程式已開啟「請勿騷擾」功能。"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"某個自動規則或應用程式已開啟「請勿騷擾」功能。"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index e5ce5d7a1b06..e09888292060 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi 已關閉"</string> <string name="bt_is_off" msgid="7436344904889461591">"藍牙已關閉"</string> <string name="dnd_is_off" msgid="3185706903793094463">"零打擾模式已關閉"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"「<xliff:g id="ID_1">%s</xliff:g>」自動規則已將零打擾模式開啟。"</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"「<xliff:g id="ID_1">%s</xliff:g>」應用程式已將零打擾模式開啟。"</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"某個自動規則或應用程式已將零打擾模式開啟。"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 63777ca66104..0a2aa8b6ceb2 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -731,6 +731,8 @@ <string name="wifi_is_off" msgid="5389597396308001471">"I-Wi-Fi ivaliwe"</string> <string name="bt_is_off" msgid="7436344904889461591">"I-Bluetooth ivaliwe"</string> <string name="dnd_is_off" msgid="3185706903793094463">"Ungaphazamisi kuvaliwe"</string> + <!-- no translation found for dnd_is_on (7009368176361546279) --> + <skip /> <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Okuthi ungaphazamisi kuvulwe umthetho ozenzakalelayo (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"Okuthi ungaphazamisi kuvulwe uhlelo lokusebenza (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Okuthi ungaphazamisi kuvulwe umthetho ozenzakalelayo noma uhlelo lokusebenza."</string> @@ -1010,10 +1012,8 @@ <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Phendulela kwisibonisi sangaphambili ukuba nesithombe ozishuthe sona esingcono?"</string> <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Sebenzisa ikhamera ebheke ngemuva ukuze uthole isithombe esibanzi esinokucaca okuphezulu."</string> <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Lesi sikrini sizovala"</b></string> - <!-- no translation found for rear_display_accessibility_folded_animation (1538121649587978179) --> - <skip /> - <!-- no translation found for rear_display_accessibility_unfolded_animation (1946153682258289040) --> - <skip /> + <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Idivayisi egoqekayo iyembulwa"</string> + <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Idivayisi egoqekayo iphendulwa nxazonke"</string> <!-- no translation found for stylus_battery_low (7134370101603167096) --> <skip /> </resources> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 80e969ead169..7a8ffa1863f6 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -227,6 +227,8 @@ <string name="screenshot_scroll_label">Capture more</string> <!-- Content description indicating that tapping a button will dismiss the screenshots UI [CHAR LIMIT=NONE] --> <string name="screenshot_dismiss_description">Dismiss screenshot</string> + <!-- Content description indicating that tapping a button will dismiss the work profile first run dialog [CHAR LIMIT=NONE] --> + <string name="screenshot_dismiss_work_profile">Dismiss work profile message</string> <!-- Content description indicating that the view is a preview of the screenshot that was just taken [CHAR LIMIT=NONE] --> <string name="screenshot_preview_description">Screenshot preview</string> <!-- Content description for the top boundary of the screenshot being cropped, with the current position as a percentage. [CHAR LIMIT=NONE] --> @@ -2406,6 +2408,8 @@ <string name="media_output_dialog_accessibility_seekbar">Volume</string> <!-- Summary for media output volume of a device in percentage [CHAR LIMIT=NONE] --> <string name="media_output_dialog_volume_percentage"><xliff:g id="percentage" example="10">%1$d</xliff:g>%%</string> + <!-- Title for Speakers and Displays group. [CHAR LIMIT=NONE] --> + <string name="media_output_group_title_speakers_and_displays">Speakers & Displays</string> <!-- Media Output Broadcast Dialog --> <!-- Title for Broadcast First Notify Dialog [CHAR LIMIT=60] --> diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt index 30117d988091..4db77abacd69 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt @@ -42,6 +42,7 @@ import com.android.systemui.settings.dagger.MultiUserUtilsModule import com.android.systemui.shortcut.ShortcutKeyDispatcher import com.android.systemui.statusbar.notification.fsi.FsiChromeRepo import com.android.systemui.statusbar.notification.InstantAppNotifier +import com.android.systemui.statusbar.notification.fsi.FsiChromeViewModelFactory import com.android.systemui.statusbar.phone.KeyguardLiftController import com.android.systemui.stylus.StylusUsiPowerStartable import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator @@ -86,6 +87,12 @@ abstract class SystemUICoreStartableModule { @ClassKey(FsiChromeRepo::class) abstract fun bindFSIChromeRepo(sysui: FsiChromeRepo): CoreStartable + /** Inject into FsiChromeWindowViewModel. */ + @Binds + @IntoMap + @ClassKey(FsiChromeViewModelFactory::class) + abstract fun bindFSIChromeWindowViewModel(sysui: FsiChromeViewModelFactory): CoreStartable + /** Inject into GarbageMonitor.Service. */ @Binds @IntoMap diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index ee9b804ec30f..4a65c4c7d3ff 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -176,6 +176,18 @@ object Flags { @JvmField val LIGHT_REVEAL_MIGRATION = unreleasedFlag(218, "light_reveal_migration", teamfood = false) + // TODO(b/262780002): Tracking Bug + @JvmField + val REVAMPED_WALLPAPER_UI = unreleasedFlag(222, "revamped_wallpaper_ui", teamfood = false) + + /** Flag to control the migration of face auth to modern architecture. */ + // TODO(b/262838215): Tracking bug + @JvmField val FACE_AUTH_REFACTOR = unreleasedFlag(220, "face_auth_refactor") + + /** Flag to control the revamp of keyguard biometrics progress animation */ + // TODO(b/244313043): Tracking bug + @JvmField val BIOMETRICS_ANIMATION_REVAMP = unreleasedFlag(221, "biometrics_animation_revamp") + // 300 - power menu // TODO(b/254512600): Tracking Bug @JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite") @@ -267,7 +279,7 @@ object Flags { // 900 - media // TODO(b/254512697): Tracking Bug - val MEDIA_TAP_TO_TRANSFER = releasedFlag(900, "media_tap_to_transfer") + val MEDIA_TAP_TO_TRANSFER = unreleasedFlag(900, "media_tap_to_transfer", teamfood = true) // TODO(b/254512502): Tracking Bug val MEDIA_SESSION_ACTIONS = unreleasedFlag(901, "media_session_actions") diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt index 0c46b23fd23e..53070a0ab8a7 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt @@ -321,6 +321,7 @@ class KeyguardUnlockAnimationController @Inject constructor( // and unlock the device as well as hiding the surface. if (surfaceBehindAlpha == 0f) { Log.d(TAG, "surfaceBehindAlphaAnimator#onAnimationEnd") + surfaceBehindRemoteAnimationTargets = null keyguardViewMediator.get().finishSurfaceBehindRemoteAnimation( false /* cancelled */) } else { @@ -825,13 +826,13 @@ class KeyguardUnlockAnimationController @Inject constructor( // Make sure we made the surface behind fully visible, just in case. It should already be // fully visible. The exit animation is finished, and we should not hold the leash anymore, // so forcing it to 1f. - surfaceBehindAlphaAnimator.cancel() - surfaceBehindEntryAnimator.cancel() surfaceBehindAlpha = 1f setSurfaceBehindAppearAmount(1f) + surfaceBehindAlphaAnimator.cancel() + surfaceBehindEntryAnimator.cancel() try { launcherUnlockController?.setUnlockAmount(1f, false /* forceIfAnimating */) - } catch (e: RemoteException) { + } catch (e: RemoteException) { Log.e(TAG, "Remote exception in notifyFinishedKeyguardExitAnimation", e) } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/LifecycleScreenStatusProvider.kt b/packages/SystemUI/src/com/android/systemui/keyguard/LifecycleScreenStatusProvider.kt index 0b04fb43c2d7..6063ce27ca16 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/LifecycleScreenStatusProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/LifecycleScreenStatusProvider.kt @@ -17,6 +17,7 @@ package com.android.systemui.keyguard import com.android.systemui.unfold.updates.screen.ScreenStatusProvider import com.android.systemui.unfold.updates.screen.ScreenStatusProvider.ScreenListener +import com.android.systemui.util.traceSection import javax.inject.Inject import javax.inject.Singleton @@ -39,14 +40,22 @@ class LifecycleScreenStatusProvider @Inject constructor(screenLifecycle: ScreenL } override fun onScreenTurnedOn() { - listeners.forEach(ScreenListener::onScreenTurnedOn) + traceSection("$TRACE_TAG#onScreenTurnedOn") { + listeners.forEach(ScreenListener::onScreenTurnedOn) + } } override fun onScreenTurningOff() { - listeners.forEach(ScreenListener::onScreenTurningOff) + traceSection("$TRACE_TAG#onScreenTurningOff") { + listeners.forEach(ScreenListener::onScreenTurningOff) + } } override fun onScreenTurningOn() { - listeners.forEach(ScreenListener::onScreenTurningOn) + traceSection("$TRACE_TAG#onScreenTurningOn") { + listeners.forEach(ScreenListener::onScreenTurningOn) + } } } + +private const val TRACE_TAG = "LifecycleScreenStatusProvider"
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java index 48a68be962dd..e3730af5a1b5 100644 --- a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java @@ -102,6 +102,15 @@ public class LogModule { return factory.create("ShadeLog", 500, false); } + /** Provides a logging buffer for Shade height messages. */ + @Provides + @SysUISingleton + @ShadeHeightLog + public static LogBuffer provideShadeHeightLogBuffer(LogBufferFactory factory) { + return factory.create("ShadeHeightLog", 500 /* maxSize */); + } + + /** Provides a logging buffer for all logs related to managing notification sections. */ @Provides @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/ShadeHeightLog.java b/packages/SystemUI/src/com/android/systemui/log/dagger/ShadeHeightLog.java new file mode 100644 index 000000000000..6fe868655ee6 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/ShadeHeightLog.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.log.dagger; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import com.android.systemui.plugins.log.LogBuffer; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import javax.inject.Qualifier; + +/** A {@link LogBuffer} for Shade height changes. */ +@Qualifier +@Documented +@Retention(RUNTIME) +public @interface ShadeHeightLog { +} diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java index fb47d97ed1d4..51b5a3d1a08c 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java @@ -70,6 +70,13 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { if (mController.isAdvancedLayoutSupported()) { + if (position >= mController.getMediaItemList().size()) { + if (DEBUG) { + Log.d(TAG, "Incorrect position: " + position + " list size: " + + mController.getMediaItemList().size()); + } + return; + } MediaItem currentMediaItem = mController.getMediaItemList().get(position); switch (currentMediaItem.getMediaItemType()) { case MediaItem.MediaItemType.TYPE_GROUP_DIVIDER: diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java index 3b1d861d0312..4e08050a6f65 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java @@ -84,8 +84,7 @@ public abstract class MediaOutputBaseAdapter extends int viewType) { mContext = viewGroup.getContext(); mHolderView = LayoutInflater.from(mContext).inflate( - mController.isAdvancedLayoutSupported() ? MediaItem.getMediaLayoutId( - viewType) /*R.layout.media_output_list_item_advanced*/ + mController.isAdvancedLayoutSupported() ? MediaItem.getMediaLayoutId(viewType) : R.layout.media_output_list_item, viewGroup, false); return null; @@ -308,9 +307,10 @@ public abstract class MediaOutputBaseAdapter extends updateTitleIcon(currentVolume == 0 ? R.drawable.media_output_icon_volume_off : R.drawable.media_output_icon_volume, mController.getColorItemContent()); + } else { + animateCornerAndVolume(mSeekBar.getProgress(), + MediaOutputSeekbar.scaleVolumeToProgress(currentVolume)); } - animateCornerAndVolume(mSeekBar.getProgress(), - MediaOutputSeekbar.scaleVolumeToProgress(currentVolume)); } else { if (!mVolumeAnimator.isStarted()) { if (mController.isAdvancedLayoutSupported()) { @@ -396,23 +396,18 @@ public abstract class MediaOutputBaseAdapter extends } void updateMutedVolumeIcon() { + mIconAreaLayout.setBackground( + mContext.getDrawable(R.drawable.media_output_item_background_active)); updateTitleIcon(R.drawable.media_output_icon_volume_off, mController.getColorItemContent()); - final GradientDrawable iconAreaBackgroundDrawable = - (GradientDrawable) mIconAreaLayout.getBackground(); - iconAreaBackgroundDrawable.setCornerRadius(mController.getActiveRadius()); } void updateUnmutedVolumeIcon() { + mIconAreaLayout.setBackground( + mContext.getDrawable(R.drawable.media_output_title_icon_area) + ); updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); - final GradientDrawable iconAreaBackgroundDrawable = - (GradientDrawable) mIconAreaLayout.getBackground(); - iconAreaBackgroundDrawable.setCornerRadii(new float[]{ - mController.getActiveRadius(), - mController.getActiveRadius(), - 0, 0, 0, 0, mController.getActiveRadius(), mController.getActiveRadius() - }); } void updateTitleIcon(@DrawableRes int id, int color) { diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java index b43656207821..8eb25c4c2495 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java @@ -87,9 +87,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executor; @@ -275,7 +277,9 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, @Override public void onDeviceListUpdate(List<MediaDevice> devices) { - if (mMediaDevices.isEmpty() || !mIsRefreshing) { + boolean isListEmpty = + isAdvancedLayoutSupported() ? mMediaItemList.isEmpty() : mMediaDevices.isEmpty(); + if (isListEmpty || !mIsRefreshing) { buildMediaDevices(devices); mCallback.onDeviceListChanged(); } else { @@ -646,16 +650,19 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, for (MediaDevice device : devices) { if (device.isMutingExpectedDevice()) { mMediaItemList.add(0, new MediaItem(device)); + mMediaItemList.add(1, new MediaItem(mContext.getString( + R.string.media_output_group_title_speakers_and_displays), + MediaItem.MediaItemType.TYPE_GROUP_DIVIDER)); } else { mMediaItemList.add(new MediaItem(device)); } } + mMediaItemList.add(new MediaItem()); } else { mMediaItemList.addAll( devices.stream().map(MediaItem::new).collect(Collectors.toList())); + categorizeMediaItems(null); } - - categorizeMediaItems(); return; } // selected device exist @@ -666,11 +673,12 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, mMediaItemList.add(new MediaItem(device)); } } - categorizeMediaItems(); + categorizeMediaItems(connectedMediaDevice); return; } // To keep the same list order final List<MediaDevice> targetMediaDevices = new ArrayList<>(); + final Map<Integer, MediaItem> dividerItems = new HashMap<>(); for (MediaItem originalMediaItem : mMediaItemList) { for (MediaDevice newDevice : devices) { if (originalMediaItem.getMediaDevice().isPresent() @@ -680,6 +688,10 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, break; } } + if (originalMediaItem.getMediaItemType() + == MediaItem.MediaItemType.TYPE_GROUP_DIVIDER) { + dividerItems.put(mMediaItemList.indexOf(originalMediaItem), originalMediaItem); + } } if (targetMediaDevices.size() != devices.size()) { devices.removeAll(targetMediaDevices); @@ -688,13 +700,34 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, mMediaItemList.clear(); mMediaItemList.addAll( targetMediaDevices.stream().map(MediaItem::new).collect(Collectors.toList())); - categorizeMediaItems(); + dividerItems.forEach((key, item) -> { + mMediaItemList.add(key, item); + }); + mMediaItemList.add(new MediaItem()); } } - private void categorizeMediaItems() { + private void categorizeMediaItems(MediaDevice connectedMediaDevice) { synchronized (mMediaDevicesLock) { - //TODO(255124239): do the categorization here + Set<String> selectedDevicesIds = getSelectedMediaDevice().stream().map( + MediaDevice::getId).collect(Collectors.toSet()); + if (connectedMediaDevice != null) { + selectedDevicesIds.add(connectedMediaDevice.getId()); + } + int latestSelected = 1; + for (MediaItem item : mMediaItemList) { + if (item.getMediaDevice().isPresent()) { + MediaDevice device = item.getMediaDevice().get(); + if (selectedDevicesIds.contains(device.getId())) { + latestSelected = mMediaItemList.indexOf(item) + 1; + } else { + mMediaItemList.add(latestSelected, new MediaItem(mContext.getString( + R.string.media_output_group_title_speakers_and_displays), + MediaItem.MediaItemType.TYPE_GROUP_DIVIDER)); + break; + } + } + } mMediaItemList.add(new MediaItem()); } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java index 9c7718d0e001..e8ceb521b6b0 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java @@ -289,6 +289,9 @@ public class ScreenshotView extends FrameLayout implements mDismissButton.getBoundsOnScreen(tmpRect); swipeRegion.op(tmpRect, Region.Op.UNION); + mMessageContainer.findViewById(R.id.message_dismiss_button).getBoundsOnScreen(tmpRect); + swipeRegion.op(tmpRect, Region.Op.UNION); + return swipeRegion; } @@ -353,6 +356,9 @@ public class ScreenshotView extends FrameLayout implements mMessageContent.setText( mContext.getString(R.string.screenshot_work_profile_notification, appName)); mMessageContainer.setVisibility(VISIBLE); + mMessageContainer.findViewById(R.id.message_dismiss_button).setOnClickListener((v) -> { + mMessageContainer.setVisibility(View.GONE); + }); } @Override // View diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index 84b836fec149..fcdde799267b 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -632,6 +632,7 @@ public final class NotificationPanelViewController implements Dumpable { private final KeyguardBottomAreaViewModel mKeyguardBottomAreaViewModel; private final KeyguardBottomAreaInteractor mKeyguardBottomAreaInteractor; private float mMinExpandHeight; + private ShadeHeightLogger mShadeHeightLogger; private boolean mPanelUpdateWhenAnimatorEnds; private boolean mHasVibratedOnOpen = false; private int mFixedDuration = NO_FIXED_DURATION; @@ -711,6 +712,7 @@ public final class NotificationPanelViewController implements Dumpable { KeyguardUpdateMonitor keyguardUpdateMonitor, MetricsLogger metricsLogger, ShadeLogger shadeLogger, + ShadeHeightLogger shadeHeightLogger, ConfigurationController configurationController, Provider<FlingAnimationUtils.Builder> flingAnimationUtilsBuilder, StatusBarTouchableRegionManager statusBarTouchableRegionManager, @@ -771,6 +773,7 @@ public final class NotificationPanelViewController implements Dumpable { mLockscreenGestureLogger = lockscreenGestureLogger; mShadeExpansionStateManager = shadeExpansionStateManager; mShadeLog = shadeLogger; + mShadeHeightLogger = shadeHeightLogger; mGutsManager = gutsManager; mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override @@ -1815,6 +1818,7 @@ public final class NotificationPanelViewController implements Dumpable { waiting = true; } else { resetViews(false /* animate */); + mShadeHeightLogger.logFunctionCall("collapsePanel"); setExpandedFraction(0); // just in case } if (!waiting) { @@ -3691,6 +3695,7 @@ public final class NotificationPanelViewController implements Dumpable { beginJankMonitoring(); fling(0 /* expand */); } else { + mShadeHeightLogger.logFunctionCall("expand"); setExpandedFraction(1f); } mInstantExpanding = false; @@ -4755,6 +4760,7 @@ public final class NotificationPanelViewController implements Dumpable { mInitialTouchFromKeyguard = mKeyguardStateController.isShowing(); if (startTracking) { mTouchSlopExceeded = true; + mShadeHeightLogger.logFunctionCall("startExpandMotion"); setExpandedHeight(mInitialOffsetOnTouch); onTrackingStarted(); } @@ -4900,6 +4906,7 @@ public final class NotificationPanelViewController implements Dumpable { @VisibleForTesting void setExpandedHeight(float height) { debugLog("setExpandedHeight(%.1f)", height); + mShadeHeightLogger.logFunctionCall("setExpandedHeight"); setExpandedHeightInternal(height); } @@ -4923,10 +4930,13 @@ public final class NotificationPanelViewController implements Dumpable { return; } + mShadeHeightLogger.logFunctionCall("updateExpandedHeightToMaxHeight"); setExpandedHeight(currentMaxPanelHeight); } private void setExpandedHeightInternal(float h) { + mShadeHeightLogger.logSetExpandedHeightInternal(h, mSystemClock.currentTimeMillis()); + if (isNaN(h)) { Log.wtf(TAG, "ExpandedHeight set to NaN"); } @@ -4983,7 +4993,9 @@ public final class NotificationPanelViewController implements Dumpable { /** Sets the expanded height relative to a number from 0 to 1. */ public void setExpandedFraction(float frac) { - setExpandedHeight(getMaxPanelTransitionDistance() * frac); + final int maxDist = getMaxPanelTransitionDistance(); + mShadeHeightLogger.logFunctionCall("setExpandedFraction"); + setExpandedHeight(maxDist * frac); } float getExpandedHeight() { @@ -5045,6 +5057,7 @@ public final class NotificationPanelViewController implements Dumpable { /** Collapses the shade instantly without animation. */ public void instantCollapse() { abortAnimations(); + mShadeHeightLogger.logFunctionCall("instantCollapse"); setExpandedFraction(0f); if (mExpanding) { notifyExpandingFinished(); @@ -5161,6 +5174,7 @@ public final class NotificationPanelViewController implements Dumpable { animator.getAnimatedFraction())); setOverExpansionInternal(expansion, false /* isFromGesture */); } + mShadeHeightLogger.logFunctionCall("height animator update"); setExpandedHeightInternal((float) animation.getAnimatedValue()); }); return animator; @@ -5635,6 +5649,7 @@ public final class NotificationPanelViewController implements Dumpable { mStatusBarStateController.setUpcomingState(KEYGUARD); mStatusBarStateListener.onStateChanged(KEYGUARD); mStatusBarStateListener.onDozeAmountChanged(1f, 1f); + mShadeHeightLogger.logFunctionCall("showAodUi"); setExpandedFraction(1f); } @@ -6181,6 +6196,7 @@ public final class NotificationPanelViewController implements Dumpable { // otherwise {@link NotificationStackScrollLayout} // wrongly enables stack height updates at the start of lockscreen swipe-up mAmbientState.setSwipingUp(h <= 0); + mShadeHeightLogger.logFunctionCall("ACTION_MOVE"); setExpandedHeightInternal(newHeight); } break; diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeightLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeightLogger.kt new file mode 100644 index 000000000000..e610b985aef9 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeightLogger.kt @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package com.android.systemui.shade + +import com.android.systemui.log.dagger.ShadeHeightLog +import com.android.systemui.plugins.log.LogBuffer +import com.android.systemui.plugins.log.LogLevel.DEBUG +import java.text.SimpleDateFormat +import javax.inject.Inject + +private const val TAG = "ShadeHeightLogger" + +/** + * Log the call stack for [NotificationPanelViewController] setExpandedHeightInternal. + * + * Tracking bug: b/261593829 + */ +class ShadeHeightLogger +@Inject constructor( + @ShadeHeightLog private val buffer: LogBuffer, +) { + + private val dateFormat = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS") + + fun logFunctionCall(functionName: String) { + buffer.log(TAG, DEBUG, { + str1 = functionName + }, { + "$str1" + }) + } + + fun logSetExpandedHeightInternal(h: Float, time: Long) { + buffer.log(TAG, DEBUG, { + double1 = h.toDouble() + long1 = time + }, { + "setExpandedHeightInternal=$double1 time=${dateFormat.format(long1)}" + }) + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeViewModelFactory.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeViewModelFactory.kt new file mode 100644 index 000000000000..1ca698b6bd58 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeViewModelFactory.kt @@ -0,0 +1,87 @@ +package com.android.systemui.statusbar.notification.fsi + +import android.annotation.UiContext +import android.app.PendingIntent +import android.content.Context +import android.graphics.drawable.Drawable +import com.android.systemui.CoreStartable +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.statusbar.notification.fsi.FsiDebug.Companion.log +import com.android.wm.shell.TaskView +import com.android.wm.shell.TaskViewFactory +import java.util.Optional +import java.util.concurrent.Executor +import javax.inject.Inject +import kotlin.coroutines.resume +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.suspendCancellableCoroutine + +/** + * Handle view-related data for fullscreen intent container on lockscreen. Wraps FsiChromeRepo, + * transforms events/state into view-relevant representation for FsiChromeView. Alive for lifetime + * of SystemUI. + */ +@SysUISingleton +class FsiChromeViewModelFactory +@Inject +constructor( + val repo: FsiChromeRepo, + val taskViewFactory: Optional<TaskViewFactory>, + @UiContext val context: Context, + @Main val mainExecutor: Executor, +) : CoreStartable { + + companion object { + private const val classTag = "FsiChromeViewModelFactory" + } + + val viewModelFlow: Flow<FsiChromeViewModel?> = + repo.infoFlow.mapLatest { fsiInfo -> + fsiInfo?.let { + log("$classTag viewModelFlow got new fsiInfo") + + // mapLatest emits null when FSIInfo is null + FsiChromeViewModel( + fsiInfo.appName, + fsiInfo.appIcon, + createTaskView(), + fsiInfo.fullscreenIntent, + repo + ) + } + } + + override fun start() { + log("$classTag start") + } + + private suspend fun createTaskView(): TaskView = suspendCancellableCoroutine { k -> + log("$classTag createTaskView") + + taskViewFactory.get().create(context, mainExecutor) { taskView -> k.resume(taskView) } + } +} + +// Alive for lifetime of FSI. +data class FsiChromeViewModel( + val appName: String, + val appIcon: Drawable, + val taskView: TaskView, + val fsi: PendingIntent, + val repo: FsiChromeRepo +) { + companion object { + private const val classTag = "FsiChromeViewModel" + } + + fun onDismiss() { + log("$classTag onDismiss") + repo.dismiss() + } + fun onFullscreen() { + log("$classTag onFullscreen") + repo.onFullscreen() + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index e70c81de81af..85590fc0b64f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -11,6 +11,7 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.collection.ArrayMap; @@ -62,6 +63,8 @@ public class NotificationIconAreaController implements public static final String HIGH_PRIORITY = "high_priority"; private static final long AOD_ICONS_APPEAR_DURATION = 200; + @ColorInt + private static final int DEFAULT_AOD_ICON_COLOR = 0xffffffff; private final ContrastColorUtil mContrastColorUtil; private final Runnable mUpdateStatusBarIcons = this::updateStatusBarIcons; @@ -84,7 +87,7 @@ public class NotificationIconAreaController implements private NotificationIconContainer mShelfIcons; private NotificationIconContainer mAodIcons; private final ArrayList<Rect> mTintAreas = new ArrayList<>(); - private Context mContext; + private final Context mContext; private final DemoModeController mDemoModeController; @@ -567,7 +570,7 @@ public class NotificationIconAreaController implements private void reloadAodColor() { mAodIconTint = Utils.getColorAttrDefaultColor(mContext, - R.attr.wallpaperTextColor); + R.attr.wallpaperTextColor, DEFAULT_AOD_ICON_COLOR); } private void updateAodIconColors() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt index aea85eb020bd..498c0b93fce8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt @@ -17,8 +17,11 @@ package com.android.systemui.statusbar.pipeline.mobile.data.repository import android.provider.Settings +import android.telephony.CarrierConfigManager import android.telephony.SubscriptionManager import com.android.settingslib.SignalIcon.MobileIconGroup +import com.android.settingslib.mobile.MobileMappings +import com.android.settingslib.mobile.MobileMappings.Config import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel import kotlinx.coroutines.flow.Flow @@ -47,6 +50,18 @@ interface MobileConnectionsRepository { /** Observe changes to the [Settings.Global.MOBILE_DATA] setting */ val globalMobileDataSettingChangedEvent: Flow<Unit> + /** + * [Config] is an object that tracks relevant configuration flags for a given subscription ID. + * In the case of [MobileMappings], it's hard-coded to check the default data subscription's + * config, so this will apply to every icon that we care about. + * + * Relevant bits in the config are things like + * [CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL] + * + * This flow will produce whenever the default data subscription or the carrier config changes. + */ + val defaultDataSubRatConfig: StateFlow<Config> + /** The icon mapping from network type to [MobileIconGroup] for the default subscription */ val defaultMobileIconMapping: Flow<Map<String, MobileIconGroup>> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt index d8e0e81837c1..db9d24ff7aba 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt @@ -19,6 +19,7 @@ package com.android.systemui.statusbar.pipeline.mobile.data.repository import android.os.Bundle import androidx.annotation.VisibleForTesting import com.android.settingslib.SignalIcon +import com.android.settingslib.mobile.MobileMappings import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.demomode.DemoMode @@ -123,6 +124,15 @@ constructor( realRepository.activeMobileDataSubscriptionId.value ) + override val defaultDataSubRatConfig: StateFlow<MobileMappings.Config> = + activeRepo + .flatMapLatest { it.defaultDataSubRatConfig } + .stateIn( + scope, + SharingStarted.WhileSubscribed(), + realRepository.defaultDataSubRatConfig.value + ) + override val defaultMobileIconMapping: Flow<Map<String, SignalIcon.MobileIconGroup>> = activeRepo.flatMapLatest { it.defaultMobileIconMapping } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt index 1e7fae717a2d..1c085256b9a3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt @@ -106,7 +106,8 @@ constructor( ) /** Demo mode doesn't currently support modifications to the mobile mappings */ - val defaultDataSubRatConfig = MutableStateFlow(MobileMappings.Config.readConfig(context)) + override val defaultDataSubRatConfig = + MutableStateFlow(MobileMappings.Config.readConfig(context)) override val defaultMobileIconGroup = flowOf(TelephonyIcons.THREE_G) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt index f27a9c9cca98..483df4759d28 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt @@ -37,7 +37,6 @@ import android.telephony.TelephonyManager import androidx.annotation.VisibleForTesting import com.android.internal.telephony.PhoneConstants import com.android.settingslib.SignalIcon.MobileIconGroup -import com.android.settingslib.mobile.MobileMappings import com.android.settingslib.mobile.MobileMappings.Config import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow @@ -152,17 +151,7 @@ constructor( IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED) ) - /** - * [Config] is an object that tracks relevant configuration flags for a given subscription ID. - * In the case of [MobileMappings], it's hard-coded to check the default data subscription's - * config, so this will apply to every icon that we care about. - * - * Relevant bits in the config are things like - * [CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL] - * - * This flow will produce whenever the default data subscription or the carrier config changes. - */ - private val defaultDataSubRatConfig: StateFlow<Config> = + override val defaultDataSubRatConfig: StateFlow<Config> = merge(defaultDataSubIdChangeEvent, carrierConfigChangedEvent) .mapLatest { Config.readConfig(context) } .stateIn( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt index 8e1197ca7c5c..a26f28af37c4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt @@ -45,6 +45,9 @@ interface MobileIconInteractor { /** Observable for the data enabled state of this connection */ val isDataEnabled: StateFlow<Boolean> + /** True if the RAT icon should always be displayed and false otherwise. */ + val alwaysShowDataRatIcon: StateFlow<Boolean> + /** Observable for RAT type (network type) indicator */ val networkTypeIconGroup: StateFlow<MobileIconGroup> @@ -64,6 +67,7 @@ interface MobileIconInteractor { class MobileIconInteractorImpl( @Application scope: CoroutineScope, defaultSubscriptionHasDataEnabled: StateFlow<Boolean>, + override val alwaysShowDataRatIcon: StateFlow<Boolean>, defaultMobileIconMapping: StateFlow<Map<String, MobileIconGroup>>, defaultMobileIconGroup: StateFlow<MobileIconGroup>, override val isDefaultConnectionFailed: StateFlow<Boolean>, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt index 6f8fb2e2332b..21f6d8ee32ef 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt @@ -55,6 +55,8 @@ interface MobileIconsInteractor { val filteredSubscriptions: Flow<List<SubscriptionModel>> /** True if the active mobile data subscription has data enabled */ val activeDataConnectionHasDataEnabled: StateFlow<Boolean> + /** True if the RAT icon should always be displayed and false otherwise. */ + val alwaysShowDataRatIcon: StateFlow<Boolean> /** The icon mapping from network type to [MobileIconGroup] for the default subscription */ val defaultMobileIconMapping: StateFlow<Map<String, MobileIconGroup>> /** Fallback [MobileIconGroup] in the case where there is no icon in the mapping */ @@ -158,6 +160,11 @@ constructor( initialValue = mapOf() ) + override val alwaysShowDataRatIcon: StateFlow<Boolean> = + mobileConnectionsRepo.defaultDataSubRatConfig + .mapLatest { it.alwaysShowDataRatIcon } + .stateIn(scope, SharingStarted.WhileSubscribed(), false) + /** If there is no mapping in [defaultMobileIconMapping], then use this default icon group */ override val defaultMobileIconGroup: StateFlow<MobileIconGroup> = mobileConnectionsRepo.defaultMobileIconGroup.stateIn( @@ -188,6 +195,7 @@ constructor( MobileIconInteractorImpl( scope, activeDataConnectionHasDataEnabled, + alwaysShowDataRatIcon, defaultMobileIconMapping, defaultMobileIconGroup, isDefaultConnectionFailed, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt index 7869021c0501..8ebd7182d5dd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt @@ -71,15 +71,19 @@ constructor( iconInteractor.isDataConnected, iconInteractor.isDataEnabled, iconInteractor.isDefaultConnectionFailed, - ) { networkTypeIconGroup, dataConnected, dataEnabled, failedConnection -> - if (!dataConnected || !dataEnabled || failedConnection) { - null - } else { - val desc = - if (networkTypeIconGroup.dataContentDescription != 0) - ContentDescription.Resource(networkTypeIconGroup.dataContentDescription) - else null - Icon.Resource(networkTypeIconGroup.dataType, desc) + iconInteractor.alwaysShowDataRatIcon, + ) { networkTypeIconGroup, dataConnected, dataEnabled, failedConnection, alwaysShow -> + val desc = + if (networkTypeIconGroup.dataContentDescription != 0) + ContentDescription.Resource(networkTypeIconGroup.dataContentDescription) + else null + val icon = Icon.Resource(networkTypeIconGroup.dataType, desc) + return@combine when { + alwaysShow -> icon + !dataConnected -> null + !dataEnabled -> null + failedConnection -> null + else -> icon } } diff --git a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLatencyTracker.kt b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLatencyTracker.kt index 79b42b8daab1..9269df31e37e 100644 --- a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLatencyTracker.kt +++ b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldLatencyTracker.kt @@ -16,12 +16,18 @@ package com.android.systemui.unfold +import android.content.ContentResolver import android.content.Context import android.hardware.devicestate.DeviceStateManager +import android.util.Log import com.android.internal.util.LatencyTracker import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.UiBackground import com.android.systemui.keyguard.ScreenLifecycle +import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener +import com.android.systemui.unfold.util.ScaleAwareTransitionProgressProvider.Companion.areAnimationsEnabled +import com.android.systemui.util.Compile +import java.util.Optional import java.util.concurrent.Executor import javax.inject.Inject @@ -41,17 +47,19 @@ class UnfoldLatencyTracker constructor( private val latencyTracker: LatencyTracker, private val deviceStateManager: DeviceStateManager, + private val transitionProgressProvider: Optional<UnfoldTransitionProgressProvider>, @UiBackground private val uiBgExecutor: Executor, private val context: Context, + private val contentResolver: ContentResolver, private val screenLifecycle: ScreenLifecycle -) : ScreenLifecycle.Observer { +) : ScreenLifecycle.Observer, TransitionProgressListener { private var folded: Boolean? = null + private var isTransitionEnabled: Boolean? = null private val foldStateListener = FoldStateListener(context) private val isFoldable: Boolean get() = - context - .resources + context.resources .getIntArray(com.android.internal.R.array.config_foldedDeviceStates) .isNotEmpty() @@ -62,6 +70,11 @@ constructor( } deviceStateManager.registerCallback(uiBgExecutor, foldStateListener) screenLifecycle.addObserver(this) + if (transitionProgressProvider.isPresent) { + // Might not be present if the device is not a foldable device or unfold transition + // is disabled in the device configuration + transitionProgressProvider.get().addCallback(this) + } } /** @@ -71,16 +84,72 @@ constructor( * end action event only if we previously received a fold state. */ override fun onScreenTurnedOn() { - if (folded == false) { + if (DEBUG) { + Log.d( + TAG, + "onScreenTurnedOn: folded = $folded, isTransitionEnabled = $isTransitionEnabled" + ) + } + + // We use onScreenTurnedOn event to finish tracking only if we are not playing + // the unfold animation (e.g. it could be disabled because of battery saver). + // When animation is enabled finishing of the tracking will be done in onTransitionStarted. + if (folded == false && isTransitionEnabled == false) { latencyTracker.onActionEnd(LatencyTracker.ACTION_SWITCH_DISPLAY_UNFOLD) + + if (DEBUG) { + Log.d(TAG, "onScreenTurnedOn: ending ACTION_SWITCH_DISPLAY_UNFOLD") + } + } + } + + /** + * This callback is used to end the metric when the unfold animation is enabled because it could + * add an additional delay to synchronize with launcher. + */ + override fun onTransitionStarted() { + if (DEBUG) { + Log.d( + TAG, + "onTransitionStarted: folded = $folded, isTransitionEnabled = $isTransitionEnabled" + ) + } + + if (folded == false && isTransitionEnabled == true) { + latencyTracker.onActionEnd(LatencyTracker.ACTION_SWITCH_DISPLAY_UNFOLD) + + if (DEBUG) { + Log.d(TAG, "onTransitionStarted: ending ACTION_SWITCH_DISPLAY_UNFOLD") + } } } private fun onFoldEvent(folded: Boolean) { - if (this.folded != folded) { + val oldFolded = this.folded + + if (oldFolded != folded) { this.folded = folded - if (!folded) { // unfolding started + + if (DEBUG) { + Log.d(TAG, "Received onFoldEvent = $folded") + } + + // Do not start tracking when oldFolded is null, this means that this is the first + // onFoldEvent after booting the device or starting SystemUI and not actual folding or + // unfolding the device. + if (oldFolded != null && !folded) { + // Unfolding started latencyTracker.onActionStart(LatencyTracker.ACTION_SWITCH_DISPLAY_UNFOLD) + isTransitionEnabled = + transitionProgressProvider.isPresent && contentResolver.areAnimationsEnabled() + + if (DEBUG) { + Log.d( + TAG, + "Starting ACTION_SWITCH_DISPLAY_UNFOLD, " + + "isTransitionEnabled = $isTransitionEnabled" + ) + } } } } @@ -88,3 +157,6 @@ constructor( private inner class FoldStateListener(context: Context) : DeviceStateManager.FoldStateListener(context, { onFoldEvent(it) }) } + +private const val TAG = "UnfoldLatencyTracker" +private val DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.VERBOSE) diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java index 71c300c3fb6f..b16a39f37e39 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java @@ -102,6 +102,8 @@ public class MediaOutputControllerTest extends SysuiTestCase { private MediaOutputController.Callback mCb = mock(MediaOutputController.Callback.class); private MediaDevice mMediaDevice1 = mock(MediaDevice.class); private MediaDevice mMediaDevice2 = mock(MediaDevice.class); + private MediaItem mMediaItem1 = mock(MediaItem.class); + private MediaItem mMediaItem2 = mock(MediaItem.class); private NearbyDevice mNearbyDevice1 = mock(NearbyDevice.class); private NearbyDevice mNearbyDevice2 = mock(NearbyDevice.class); private MediaMetadata mMediaMetadata = mock(MediaMetadata.class); @@ -125,6 +127,7 @@ public class MediaOutputControllerTest extends SysuiTestCase { private LocalMediaManager mLocalMediaManager; private List<MediaController> mMediaControllers = new ArrayList<>(); private List<MediaDevice> mMediaDevices = new ArrayList<>(); + private List<MediaItem> mMediaItemList = new ArrayList<>(); private List<NearbyDevice> mNearbyDevices = new ArrayList<>(); private MediaDescription mMediaDescription; private List<RoutingSessionInfo> mRoutingSessionInfos = new ArrayList<>(); @@ -157,6 +160,11 @@ public class MediaOutputControllerTest extends SysuiTestCase { when(mMediaDevice2.getId()).thenReturn(TEST_DEVICE_2_ID); mMediaDevices.add(mMediaDevice1); mMediaDevices.add(mMediaDevice2); + when(mMediaItem1.getMediaDevice()).thenReturn(Optional.of(mMediaDevice1)); + when(mMediaItem2.getMediaDevice()).thenReturn(Optional.of(mMediaDevice2)); + mMediaItemList.add(mMediaItem1); + mMediaItemList.add(mMediaItem2); + when(mNearbyDevice1.getMediaRoute2Id()).thenReturn(TEST_DEVICE_1_ID); when(mNearbyDevice1.getRangeZone()).thenReturn(NearbyDevice.RANGE_CLOSE); @@ -314,6 +322,18 @@ public class MediaOutputControllerTest extends SysuiTestCase { } @Test + public void advanced_onDeviceListUpdate_isRefreshing_updatesNeedRefreshToTrue() { + when(mFlags.isEnabled(Flags.OUTPUT_SWITCHER_ADVANCED_LAYOUT)).thenReturn(true); + mMediaOutputController.start(mCb); + reset(mCb); + mMediaOutputController.mIsRefreshing = true; + + mMediaOutputController.onDeviceListUpdate(mMediaDevices); + + assertThat(mMediaOutputController.mNeedRefresh).isTrue(); + } + + @Test public void cancelMuteAwaitConnection_cancelsWithMediaManager() { when(mAudioManager.getMutingExpectedDevice()).thenReturn(mock(AudioDeviceAttributes.class)); mMediaOutputController.start(mCb); diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java index d629d8b61ad4..01f13e665318 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java @@ -219,6 +219,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Mock private KeyguardStateController mKeyguardStateController; @Mock private DozeLog mDozeLog; @Mock private ShadeLogger mShadeLog; + @Mock private ShadeHeightLogger mShadeHeightLogger; @Mock private CommandQueue mCommandQueue; @Mock private VibratorHelper mVibratorHelper; @Mock private LatencyTracker mLatencyTracker; @@ -455,6 +456,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { mLatencyTracker, mPowerManager, mAccessibilityManager, 0, mUpdateMonitor, mMetricsLogger, mShadeLog, + mShadeHeightLogger, mConfigurationController, () -> flingAnimationUtilsBuilder, mStatusBarTouchableRegionManager, mConversationNotificationManager, mMediaHierarchyManager, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/fsi/FsiChromeViewModelFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/fsi/FsiChromeViewModelFactoryTest.kt new file mode 100644 index 000000000000..5cee9e377dfb --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/fsi/FsiChromeViewModelFactoryTest.kt @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.fsi + +import android.app.PendingIntent +import android.graphics.drawable.Drawable +import android.testing.AndroidTestingRunner +import android.testing.TestableLooper.RunWithLooper +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.util.concurrency.FakeExecutor +import com.android.systemui.util.mockito.any +import com.android.systemui.util.mockito.mock +import com.android.systemui.util.mockito.whenever +import com.android.systemui.util.mockito.withArgCaptor +import com.android.systemui.util.time.FakeSystemClock +import com.android.wm.shell.TaskView +import com.android.wm.shell.TaskViewFactory +import com.google.common.truth.Truth.assertThat +import java.util.Optional +import java.util.function.Consumer +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.Mockito +import org.mockito.Mockito.verify +import org.mockito.MockitoAnnotations + +@SmallTest +@RunWith(AndroidTestingRunner::class) +@RunWithLooper(setAsMainLooper = true) +class FsiChromeViewModelFactoryTest : SysuiTestCase() { + @Mock private lateinit var taskViewFactoryOptional: Optional<TaskViewFactory> + @Mock private lateinit var taskViewFactory: TaskViewFactory + @Mock lateinit var taskView: TaskView + + @Main var mainExecutor = FakeExecutor(FakeSystemClock()) + lateinit var viewModelFactory: FsiChromeViewModelFactory + + private val fakeInfoFlow = MutableStateFlow<FsiChromeRepo.FSIInfo?>(null) + private var fsiChromeRepo: FsiChromeRepo = + mock<FsiChromeRepo>().apply { whenever(infoFlow).thenReturn(fakeInfoFlow) } + + private val appName = "appName" + private val appIcon: Drawable = context.getDrawable(com.android.systemui.R.drawable.ic_android) + private val fsi: PendingIntent = Mockito.mock(PendingIntent::class.java) + private val fsiInfo = FsiChromeRepo.FSIInfo(appName, appIcon, fsi) + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + + whenever(taskViewFactoryOptional.get()).thenReturn(taskViewFactory) + + viewModelFactory = + FsiChromeViewModelFactory(fsiChromeRepo, taskViewFactoryOptional, context, mainExecutor) + } + + @Test + fun testViewModelFlow_update_createsTaskView() { + runTest { + val latestViewModel = + viewModelFactory.viewModelFlow + .onStart { FsiDebug.log("viewModelFactory.viewModelFlow.onStart") } + .stateIn( + backgroundScope, // stateIn runs forever, don't count it as test coroutine + SharingStarted.Eagerly, + null + ) + runCurrent() // Drain queued backgroundScope operations + + // Test: emit the fake FSIInfo + fakeInfoFlow.emit(fsiInfo) + runCurrent() + + val taskViewFactoryCallback: Consumer<TaskView> = withArgCaptor { + verify(taskViewFactory).create(any(), any(), capture()) + } + taskViewFactoryCallback.accept(taskView) // this will call k.resume + runCurrent() + + // Verify that the factory has produced a new ViewModel + // containing the relevant data from FsiInfo + val expectedViewModel = + FsiChromeViewModel(appName, appIcon, taskView, fsi, fsiChromeRepo) + + assertThat(latestViewModel.value).isEqualTo(expectedViewModel) + } + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt index d6af0e6b3a82..04d3cdd89ab7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt @@ -20,6 +20,7 @@ import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID import android.telephony.TelephonyDisplayInfo import android.telephony.TelephonyManager import com.android.settingslib.SignalIcon +import com.android.settingslib.mobile.MobileMappings import com.android.settingslib.mobile.TelephonyIcons import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel @@ -68,6 +69,8 @@ class FakeMobileConnectionsRepository(mobileMappings: MobileMappingsProxy) : private val _globalMobileDataSettingChangedEvent = MutableStateFlow(Unit) override val globalMobileDataSettingChangedEvent = _globalMobileDataSettingChangedEvent + override val defaultDataSubRatConfig = MutableStateFlow(MobileMappings.Config()) + private val _defaultMobileIconMapping = MutableStateFlow(TEST_MAPPING) override val defaultMobileIconMapping = _defaultMobileIconMapping diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt index 4b82b398360d..6d80acbb65ac 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt @@ -23,6 +23,7 @@ import android.net.NetworkCapabilities import android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED import android.net.NetworkCapabilities.TRANSPORT_CELLULAR import android.provider.Settings +import android.telephony.CarrierConfigManager import android.telephony.SubscriptionInfo import android.telephony.SubscriptionManager import android.telephony.TelephonyCallback @@ -30,6 +31,8 @@ import android.telephony.TelephonyCallback.ActiveDataSubscriptionIdListener import android.telephony.TelephonyManager import androidx.test.filters.SmallTest import com.android.internal.telephony.PhoneConstants +import com.android.settingslib.R +import com.android.settingslib.mobile.MobileMappings import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel @@ -50,6 +53,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking import org.junit.After import org.junit.Assert.assertThrows +import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers.anyInt @@ -63,6 +67,7 @@ import org.mockito.MockitoAnnotations class MobileConnectionsRepositoryTest : SysuiTestCase() { private lateinit var underTest: MobileConnectionsRepositoryImpl + private lateinit var connectionFactory: MobileConnectionRepositoryImpl.Factory @Mock private lateinit var connectivityManager: ConnectivityManager @Mock private lateinit var subscriptionManager: SubscriptionManager @Mock private lateinit var telephonyManager: TelephonyManager @@ -84,7 +89,7 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() { } } - val connectionFactory: MobileConnectionRepositoryImpl.Factory = + connectionFactory = MobileConnectionRepositoryImpl.Factory( context = context, telephonyManager = telephonyManager, @@ -385,6 +390,92 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() { job.cancel() } + @Test + fun config_initiallyFromContext() = + runBlocking(IMMEDIATE) { + overrideResource(R.bool.config_showMin3G, true) + val configFromContext = MobileMappings.Config.readConfig(context) + assertThat(configFromContext.showAtLeast3G).isTrue() + + // The initial value will be fetched when the repo is created, so we need to override + // the resources and then re-create the repo. + underTest = + MobileConnectionsRepositoryImpl( + connectivityManager, + subscriptionManager, + telephonyManager, + logger, + mobileMappings, + fakeBroadcastDispatcher, + globalSettings, + context, + IMMEDIATE, + scope, + connectionFactory, + ) + + var latest: MobileMappings.Config? = null + val job = underTest.defaultDataSubRatConfig.onEach { latest = it }.launchIn(this) + + assertTrue(latest!!.areEqual(configFromContext)) + assertTrue(latest!!.showAtLeast3G) + + job.cancel() + } + + @Test + fun config_subIdChangeEvent_updated() = + runBlocking(IMMEDIATE) { + var latest: MobileMappings.Config? = null + val job = underTest.defaultDataSubRatConfig.onEach { latest = it }.launchIn(this) + assertThat(latest!!.showAtLeast3G).isFalse() + + overrideResource(R.bool.config_showMin3G, true) + val configFromContext = MobileMappings.Config.readConfig(context) + assertThat(configFromContext.showAtLeast3G).isTrue() + + // WHEN the change event is fired + fakeBroadcastDispatcher.registeredReceivers.forEach { receiver -> + receiver.onReceive( + context, + Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED) + .putExtra(PhoneConstants.SUBSCRIPTION_KEY, SUB_1_ID) + ) + } + + // THEN the config is updated + assertTrue(latest!!.areEqual(configFromContext)) + assertTrue(latest!!.showAtLeast3G) + + job.cancel() + } + + @Test + fun config_carrierConfigChangeEvent_updated() = + runBlocking(IMMEDIATE) { + var latest: MobileMappings.Config? = null + val job = underTest.defaultDataSubRatConfig.onEach { latest = it }.launchIn(this) + assertThat(latest!!.showAtLeast3G).isFalse() + + overrideResource(R.bool.config_showMin3G, true) + val configFromContext = MobileMappings.Config.readConfig(context) + assertThat(configFromContext.showAtLeast3G).isTrue() + + // WHEN the change event is fired + fakeBroadcastDispatcher.registeredReceivers.forEach { receiver -> + receiver.onReceive( + context, + Intent(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED) + ) + } + + // THEN the config is updated + assertThat(latest!!.areEqual(configFromContext)).isTrue() + assertThat(latest!!.showAtLeast3G).isTrue() + + job.cancel() + } + private fun createCapabilities(connected: Boolean, validated: Boolean): NetworkCapabilities = mock<NetworkCapabilities>().also { whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(connected) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt index 3ae7d3ca1c19..1ff1636a0a6e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt @@ -22,6 +22,8 @@ import com.android.settingslib.mobile.TelephonyIcons import kotlinx.coroutines.flow.MutableStateFlow class FakeMobileIconInteractor : MobileIconInteractor { + override val alwaysShowDataRatIcon = MutableStateFlow(false) + private val _iconGroup = MutableStateFlow<SignalIcon.MobileIconGroup>(TelephonyIcons.THREE_G) override val networkTypeIconGroup = _iconGroup diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconsInteractor.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconsInteractor.kt index 0d4044db71e0..9f300e9e0cf3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconsInteractor.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconsInteractor.kt @@ -54,6 +54,8 @@ class FakeMobileIconsInteractor(mobileMappings: MobileMappingsProxy) : MobileIco private val _activeDataConnectionHasDataEnabled = MutableStateFlow(false) override val activeDataConnectionHasDataEnabled = _activeDataConnectionHasDataEnabled + override val alwaysShowDataRatIcon = MutableStateFlow(false) + private val _defaultMobileIconMapping = MutableStateFlow(TEST_MAPPING) override val defaultMobileIconMapping = _defaultMobileIconMapping diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt index fd41b5bebd39..2281e89bdfc1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt @@ -59,6 +59,7 @@ class MobileIconInteractorTest : SysuiTestCase() { MobileIconInteractorImpl( scope, mobileIconsInteractor.activeDataConnectionHasDataEnabled, + mobileIconsInteractor.alwaysShowDataRatIcon, mobileIconsInteractor.defaultMobileIconMapping, mobileIconsInteractor.defaultMobileIconGroup, mobileIconsInteractor.isDefaultConnectionFailed, @@ -223,6 +224,21 @@ class MobileIconInteractorTest : SysuiTestCase() { } @Test + fun alwaysShowDataRatIcon_matchesParent() = + runBlocking(IMMEDIATE) { + var latest: Boolean? = null + val job = underTest.alwaysShowDataRatIcon.onEach { latest = it }.launchIn(this) + + mobileIconsInteractor.alwaysShowDataRatIcon.value = true + assertThat(latest).isTrue() + + mobileIconsInteractor.alwaysShowDataRatIcon.value = false + assertThat(latest).isFalse() + + job.cancel() + } + + @Test fun test_isDefaultDataEnabled_matchesParent() = runBlocking(IMMEDIATE) { var latest: Boolean? = null diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt index 58e57e298e51..85578942ba86 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.pipeline.mobile.domain.interactor import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID import androidx.test.filters.SmallTest +import com.android.settingslib.mobile.MobileMappings import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectivityModel import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel @@ -255,6 +256,38 @@ class MobileIconsInteractorTest : SysuiTestCase() { job.cancel() } + @Test + fun alwaysShowDataRatIcon_configHasTrue() = + runBlocking(IMMEDIATE) { + var latest: Boolean? = null + val job = underTest.alwaysShowDataRatIcon.onEach { latest = it }.launchIn(this) + + val config = MobileMappings.Config() + config.alwaysShowDataRatIcon = true + connectionsRepository.defaultDataSubRatConfig.value = config + yield() + + assertThat(latest).isTrue() + + job.cancel() + } + + @Test + fun alwaysShowDataRatIcon_configHasFalse() = + runBlocking(IMMEDIATE) { + var latest: Boolean? = null + val job = underTest.alwaysShowDataRatIcon.onEach { latest = it }.launchIn(this) + + val config = MobileMappings.Config() + config.alwaysShowDataRatIcon = false + connectionsRepository.defaultDataSubRatConfig.value = config + yield() + + assertThat(latest).isFalse() + + job.cancel() + } + companion object { private val IMMEDIATE = Dispatchers.Main.immediate diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt index d4c2c3f6cc2b..f2533a951bb6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt @@ -174,6 +174,66 @@ class MobileIconViewModelTest : SysuiTestCase() { job.cancel() } + @Test + fun networkType_alwaysShow_shownEvenWhenDisabled() = + runBlocking(IMMEDIATE) { + interactor.setIconGroup(THREE_G) + interactor.setIsDataEnabled(true) + interactor.alwaysShowDataRatIcon.value = true + + var latest: Icon? = null + val job = underTest.networkTypeIcon.onEach { latest = it }.launchIn(this) + + val expected = + Icon.Resource( + THREE_G.dataType, + ContentDescription.Resource(THREE_G.dataContentDescription) + ) + assertThat(latest).isEqualTo(expected) + + job.cancel() + } + + @Test + fun networkType_alwaysShow_shownEvenWhenDisconnected() = + runBlocking(IMMEDIATE) { + interactor.setIconGroup(THREE_G) + interactor.isDataConnected.value = false + interactor.alwaysShowDataRatIcon.value = true + + var latest: Icon? = null + val job = underTest.networkTypeIcon.onEach { latest = it }.launchIn(this) + + val expected = + Icon.Resource( + THREE_G.dataType, + ContentDescription.Resource(THREE_G.dataContentDescription) + ) + assertThat(latest).isEqualTo(expected) + + job.cancel() + } + + @Test + fun networkType_alwaysShow_shownEvenWhenFailedConnection() = + runBlocking(IMMEDIATE) { + interactor.setIconGroup(THREE_G) + interactor.setIsFailedConnection(true) + interactor.alwaysShowDataRatIcon.value = true + + var latest: Icon? = null + val job = underTest.networkTypeIcon.onEach { latest = it }.launchIn(this) + + val expected = + Icon.Resource( + THREE_G.dataType, + ContentDescription.Resource(THREE_G.dataContentDescription) + ) + assertThat(latest).isEqualTo(expected) + + job.cancel() + } + /** Convenience constructor for these tests */ private fun defaultSignal( level: Int = 1, diff --git a/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt index 4e2736c74007..c7dc0ab8f9cf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt @@ -18,6 +18,7 @@ package com.android.systemui.unfold import android.hardware.devicestate.DeviceStateManager import android.hardware.devicestate.DeviceStateManager.FoldStateListener +import android.provider.Settings import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker @@ -32,9 +33,11 @@ import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mock +import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.MockitoAnnotations +import java.util.Optional @RunWith(AndroidTestingRunner::class) @SmallTest @@ -59,14 +62,18 @@ class UnfoldLatencyTrackerTest : SysuiTestCase() { private lateinit var unfoldLatencyTracker: UnfoldLatencyTracker + private val transitionProgressProvider = TestUnfoldTransitionProvider() + @Before fun setUp() { MockitoAnnotations.initMocks(this) unfoldLatencyTracker = UnfoldLatencyTracker( latencyTracker, deviceStateManager, + Optional.of(transitionProgressProvider), context.mainExecutor, context, + context.contentResolver, screenLifecycle ).apply { init() } deviceStates = FoldableTestUtils.findDeviceStates(context) @@ -76,23 +83,89 @@ class UnfoldLatencyTrackerTest : SysuiTestCase() { } @Test - fun unfold_eventPropagated() { + fun unfold_startedFolded_animationsDisabled_eventPropagatedOnScreenTurnedOnEvent() { + setAnimationsEnabled(false) + sendFoldEvent(folded = true) + sendFoldEvent(folded = false) + + sendScreenTurnedOnEvent() + + verify(latencyTracker).onActionStart(any()) + verify(latencyTracker).onActionEnd(any()) + } + + @Test + fun unfold_startedFolded_animationsEnabledOnScreenTurnedOn_eventNotFinished() { + setAnimationsEnabled(true) + sendFoldEvent(folded = true) + sendFoldEvent(folded = false) + + sendScreenTurnedOnEvent() + + verify(latencyTracker).onActionStart(any()) + verify(latencyTracker, never()).onActionEnd(any()) + } + + @Test + fun unfold_firstFoldEventAnimationsEnabledOnScreenTurnedOnAndTransitionStarted_eventNotPropagated() { + setAnimationsEnabled(true) + sendFoldEvent(folded = false) + + sendScreenTurnedOnEvent() + transitionProgressProvider.onTransitionStarted() + + verifyNoMoreInteractions(latencyTracker) + } + + @Test + fun unfold_secondFoldEventAnimationsEnabledOnScreenTurnedOnAndTransitionStarted_eventPropagated() { + setAnimationsEnabled(true) + sendFoldEvent(folded = true) + sendFoldEvent(folded = false) + + sendScreenTurnedOnEvent() + transitionProgressProvider.onTransitionStarted() + + verify(latencyTracker).onActionStart(any()) + verify(latencyTracker).onActionEnd(any()) + } + + @Test + fun unfold_unfoldFoldUnfoldAnimationsEnabledOnScreenTurnedOnAndTransitionStarted_eventPropagated() { + setAnimationsEnabled(true) + sendFoldEvent(folded = false) + sendFoldEvent(folded = true) sendFoldEvent(folded = false) + sendScreenTurnedOnEvent() + transitionProgressProvider.onTransitionStarted() verify(latencyTracker).onActionStart(any()) verify(latencyTracker).onActionEnd(any()) } @Test - fun fold_eventNotPropagated() { + fun fold_animationsDisabled_screenTurnedOn_eventNotPropagated() { + setAnimationsEnabled(false) sendFoldEvent(folded = true) + sendScreenTurnedOnEvent() // outer display on. verifyNoMoreInteractions(latencyTracker) } @Test + fun fold_animationsEnabled_screenTurnedOn_eventNotPropagated() { + setAnimationsEnabled(true) + sendFoldEvent(folded = true) + + sendScreenTurnedOnEvent() // outer display on. + transitionProgressProvider.onTransitionStarted() + + verifyNoMoreInteractions(latencyTracker) + } + + @Test fun onScreenTurnedOn_stateNeverSet_eventNotPropagated() { sendScreenTurnedOnEvent() @@ -107,4 +180,20 @@ class UnfoldLatencyTrackerTest : SysuiTestCase() { private fun sendScreenTurnedOnEvent() { screenLifecycleCaptor.value.onScreenTurnedOn() } + + private fun setAnimationsEnabled(enabled: Boolean) { + val durationScale = + if (enabled) { + 1f + } else { + 0f + } + + // It uses [TestableSettingsProvider] and it will be cleared after the test + Settings.Global.putString( + context.contentResolver, + Settings.Global.ANIMATOR_DURATION_SCALE, + durationScale.toString() + ) + } }
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index b9dfc27483b8..2e06cc544c63 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -77,7 +77,6 @@ import android.view.View; import android.view.ViewTreeObserver; import android.view.WindowManager; -import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import com.android.internal.colorextraction.ColorExtractor; @@ -142,6 +141,7 @@ import com.android.wm.shell.sysui.ShellCommandHandler; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; +import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -152,13 +152,13 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.stubbing.Answer; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Optional; -@FlakyTest @SmallTest @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper(setAsMainLooper = true) @@ -411,6 +411,15 @@ public class BubblesTest extends SysuiTestCase { .addCallback(mKeyguardStateControllerCallbackCaptor.capture()); } + @After + public void tearDown() { + ArrayList<Bubble> bubbles = new ArrayList<>(mBubbleData.getBubbles()); + for (int i = 0; i < bubbles.size(); i++) { + mBubbleController.removeBubble(bubbles.get(i).getKey(), + Bubbles.DISMISS_NO_LONGER_BUBBLE); + } + } + @Test public void dreamingHidesBubbles() throws RemoteException { mBubbleController.updateBubble(mBubbleEntry); diff --git a/packages/SystemUI/unfold/src/com/android/systemui/unfold/progress/PhysicsBasedUnfoldTransitionProgressProvider.kt b/packages/SystemUI/unfold/src/com/android/systemui/unfold/progress/PhysicsBasedUnfoldTransitionProgressProvider.kt index ecc029dc1a07..074b1e162fed 100644 --- a/packages/SystemUI/unfold/src/com/android/systemui/unfold/progress/PhysicsBasedUnfoldTransitionProgressProvider.kt +++ b/packages/SystemUI/unfold/src/com/android/systemui/unfold/progress/PhysicsBasedUnfoldTransitionProgressProvider.kt @@ -16,6 +16,7 @@ package com.android.systemui.unfold.progress import android.os.Trace +import android.os.Trace.TRACE_TAG_APP import android.util.Log import androidx.dynamicanimation.animation.DynamicAnimation import androidx.dynamicanimation.animation.FloatPropertyCompat @@ -157,7 +158,10 @@ class PhysicsBasedUnfoldTransitionProgressProvider( } private fun onStartTransition() { + Trace.beginSection( "$TAG#onStartTransition") listeners.forEach { it.onTransitionStarted() } + Trace.endSection() + isTransitionRunning = true if (DEBUG) { diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java index c0e7ab8a28a5..8b579ac6539d 100644 --- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java +++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java @@ -249,7 +249,7 @@ class AutomaticBrightnessController { HysteresisLevels screenBrightnessThresholdsIdle, Context context, HighBrightnessModeController hbmController, BrightnessThrottler brightnessThrottler, BrightnessMappingStrategy idleModeBrightnessMapper, int ambientLightHorizonShort, - int ambientLightHorizonLong) { + int ambientLightHorizonLong, float userLux, float userBrightness) { this(new Injector(), callbacks, looper, sensorManager, lightSensor, interactiveModeBrightnessMapper, lightSensorWarmUpTime, brightnessMin, brightnessMax, dozeScaleFactor, @@ -258,7 +258,7 @@ class AutomaticBrightnessController { ambientBrightnessThresholds, screenBrightnessThresholds, ambientBrightnessThresholdsIdle, screenBrightnessThresholdsIdle, context, hbmController, brightnessThrottler, idleModeBrightnessMapper, - ambientLightHorizonShort, ambientLightHorizonLong + ambientLightHorizonShort, ambientLightHorizonLong, userLux, userBrightness ); } @@ -275,7 +275,7 @@ class AutomaticBrightnessController { HysteresisLevels screenBrightnessThresholdsIdle, Context context, HighBrightnessModeController hbmController, BrightnessThrottler brightnessThrottler, BrightnessMappingStrategy idleModeBrightnessMapper, int ambientLightHorizonShort, - int ambientLightHorizonLong) { + int ambientLightHorizonLong, float userLux, float userBrightness) { mInjector = injector; mClock = injector.createClock(); mContext = context; @@ -322,6 +322,12 @@ class AutomaticBrightnessController { mIdleModeBrightnessMapper = idleModeBrightnessMapper; // Initialize to active (normal) screen brightness mode switchToInteractiveScreenBrightnessMode(); + + if (userLux != BrightnessMappingStrategy.NO_USER_LUX + && userBrightness != BrightnessMappingStrategy.NO_USER_BRIGHTNESS) { + // Use the given short-term model + setScreenBrightnessByUser(userLux, userBrightness); + } } /** @@ -383,7 +389,8 @@ class AutomaticBrightnessController { public void configure(int state, @Nullable BrightnessConfiguration configuration, float brightness, boolean userChangedBrightness, float adjustment, - boolean userChangedAutoBrightnessAdjustment, int displayPolicy) { + boolean userChangedAutoBrightnessAdjustment, int displayPolicy, + boolean shouldResetShortTermModel) { mState = state; mHbmController.setAutoBrightnessEnabled(mState); // While dozing, the application processor may be suspended which will prevent us from @@ -392,7 +399,7 @@ class AutomaticBrightnessController { // and hold onto the last computed screen auto brightness. We save the dozing flag for // debugging purposes. boolean dozing = (displayPolicy == DisplayPowerRequest.POLICY_DOZE); - boolean changed = setBrightnessConfiguration(configuration); + boolean changed = setBrightnessConfiguration(configuration, shouldResetShortTermModel); changed |= setDisplayPolicy(displayPolicy); if (userChangedAutoBrightnessAdjustment) { changed |= setAutoBrightnessAdjustment(adjustment); @@ -492,9 +499,13 @@ class AutomaticBrightnessController { // and we can't use this data to add a new control point to the short-term model. return false; } - mCurrentBrightnessMapper.addUserDataPoint(mAmbientLux, brightness); + return setScreenBrightnessByUser(mAmbientLux, brightness); + } + + private boolean setScreenBrightnessByUser(float lux, float brightness) { + mCurrentBrightnessMapper.addUserDataPoint(lux, brightness); mShortTermModelValid = true; - mShortTermModelAnchor = mAmbientLux; + mShortTermModelAnchor = lux; if (mLoggingEnabled) { Slog.d(TAG, "ShortTermModel: anchor=" + mShortTermModelAnchor); } @@ -514,9 +525,10 @@ class AutomaticBrightnessController { mShortTermModelValid = false; } - public boolean setBrightnessConfiguration(BrightnessConfiguration configuration) { + public boolean setBrightnessConfiguration(BrightnessConfiguration configuration, + boolean shouldResetShortTermModel) { if (mInteractiveModeBrightnessMapper.setBrightnessConfiguration(configuration)) { - if (!isInIdleMode()) { + if (!isInIdleMode() && shouldResetShortTermModel) { resetShortTermModel(); } return true; diff --git a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java index 25d0752844fd..3fc50c4edf6d 100644 --- a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java +++ b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java @@ -51,6 +51,9 @@ import java.util.Objects; public abstract class BrightnessMappingStrategy { private static final String TAG = "BrightnessMappingStrategy"; + public static final float NO_USER_LUX = -1; + public static final float NO_USER_BRIGHTNESS = -1; + private static final float LUX_GRAD_SMOOTHING = 0.25f; private static final float MAX_GRAD = 1.0f; private static final float SHORT_TERM_MODEL_THRESHOLD_RATIO = 0.6f; @@ -68,6 +71,7 @@ public abstract class BrightnessMappingStrategy { * Creates a BrightnessMappingStrategy for active (normal) mode. * @param resources * @param displayDeviceConfig + * @param displayWhiteBalanceController * @return the BrightnessMappingStrategy */ @Nullable @@ -82,6 +86,7 @@ public abstract class BrightnessMappingStrategy { * Creates a BrightnessMappingStrategy for idle screen brightness mode. * @param resources * @param displayDeviceConfig + * @param displayWhiteBalanceController * @return the BrightnessMappingStrategy */ @Nullable @@ -100,6 +105,7 @@ public abstract class BrightnessMappingStrategy { * @param displayDeviceConfig * @param isForIdleMode determines whether the configurations loaded are for idle screen * brightness mode or active screen brightness mode. + * @param displayWhiteBalanceController * @return the BrightnessMappingStrategy */ @Nullable @@ -370,6 +376,10 @@ public abstract class BrightnessMappingStrategy { */ public abstract boolean isForIdleMode(); + abstract float getUserLux(); + + abstract float getUserBrightness(); + /** * Check if the short term model should be reset given the anchor lux the last * brightness change was made at and the current ambient lux. @@ -604,8 +614,8 @@ public abstract class BrightnessMappingStrategy { mMaxGamma = maxGamma; mAutoBrightnessAdjustment = 0; - mUserLux = -1; - mUserBrightness = -1; + mUserLux = NO_USER_LUX; + mUserBrightness = NO_USER_BRIGHTNESS; if (mLoggingEnabled) { PLOG.start("simple mapping strategy"); } @@ -732,6 +742,16 @@ public abstract class BrightnessMappingStrategy { return false; } + @Override + float getUserLux() { + return mUserLux; + } + + @Override + float getUserBrightness() { + return mUserBrightness; + } + private void computeSpline() { Pair<float[], float[]> curve = getAdjustedCurve(mLux, mBrightness, mUserLux, mUserBrightness, mAutoBrightnessAdjustment, mMaxGamma); @@ -799,8 +819,8 @@ public abstract class BrightnessMappingStrategy { mIsForIdleMode = isForIdleMode; mMaxGamma = maxGamma; mAutoBrightnessAdjustment = 0; - mUserLux = -1; - mUserBrightness = -1; + mUserLux = NO_USER_LUX; + mUserBrightness = NO_USER_BRIGHTNESS; mDisplayWhiteBalanceController = displayWhiteBalanceController; mNits = nits; @@ -972,6 +992,16 @@ public abstract class BrightnessMappingStrategy { return mIsForIdleMode; } + @Override + float getUserLux() { + return mUserLux; + } + + @Override + float getUserBrightness() { + return mUserBrightness; + } + /** * Prints out the default curve and how it differs from the long-term curve * and the current curve (in case the current curve includes short-term adjustments). diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 3da7d830a23f..8f35924128bb 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -593,7 +593,7 @@ public final class DisplayManagerService extends SystemService { getBrightnessConfigForDisplayWithPdsFallbackLocked( logicalDisplay.getPrimaryDisplayDeviceLocked().getUniqueId(), userSerial); - dpc.setBrightnessConfiguration(config); + dpc.setBrightnessConfiguration(config, /* shouldResetShortTermModel= */ true); } dpc.onSwitchUser(newUserId); }); @@ -1890,7 +1890,7 @@ public final class DisplayManagerService extends SystemService { } DisplayPowerController dpc = getDpcFromUniqueIdLocked(uniqueId); if (dpc != null) { - dpc.setBrightnessConfiguration(c); + dpc.setBrightnessConfiguration(c, /* shouldResetShortTermModel= */ true); } } } @@ -1939,7 +1939,8 @@ public final class DisplayManagerService extends SystemService { final DisplayPowerController dpc = mDisplayPowerControllers.get( logicalDisplay.getDisplayIdLocked()); if (dpc != null) { - dpc.setBrightnessConfiguration(config); + dpc.setBrightnessConfiguration(config, + /* shouldResetShortTermModel= */ false); } } }); diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 2fc6fd2254a7..c740b9856e16 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -231,6 +231,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // True if should use light sensor to automatically determine doze screen brightness. private final boolean mAllowAutoBrightnessWhileDozingConfig; + // True if the brightness config has changed and the short-term model needs to be reset + private boolean mShouldResetShortTermModel; + // Whether or not the color fade on screen on / off is enabled. private final boolean mColorFadeEnabled; @@ -957,6 +960,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return; } + float userLux = BrightnessMappingStrategy.NO_USER_LUX; + float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS; + if (mInteractiveModeBrightnessMapper != null) { + userLux = mInteractiveModeBrightnessMapper.getUserLux(); + userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness(); + } + final boolean isIdleScreenBrightnessEnabled = resources.getBoolean( R.bool.config_enableIdleScreenBrightnessMode); mInteractiveModeBrightnessMapper = BrightnessMappingStrategy.create(resources, @@ -1084,7 +1094,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call ambientBrightnessThresholdsIdle, screenBrightnessThresholdsIdle, mContext, mHbmController, mBrightnessThrottler, mIdleModeBrightnessMapper, mDisplayDeviceConfig.getAmbientHorizonShort(), - mDisplayDeviceConfig.getAmbientHorizonLong()); + mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userBrightness); mBrightnessEventRingBuffer = new RingBuffer<>(BrightnessEvent.class, RINGBUFFER_MAX); @@ -1413,7 +1423,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessConfiguration, mLastUserSetScreenBrightness, userSetBrightnessChanged, autoBrightnessAdjustment, - autoBrightnessAdjustmentChanged, mPowerRequest.policy); + autoBrightnessAdjustmentChanged, mPowerRequest.policy, + mShouldResetShortTermModel); + mShouldResetShortTermModel = false; } if (mBrightnessTracker != null) { @@ -1807,8 +1819,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mHandler.sendEmptyMessage(MSG_IGNORE_PROXIMITY); } - public void setBrightnessConfiguration(BrightnessConfiguration c) { - Message msg = mHandler.obtainMessage(MSG_CONFIGURE_BRIGHTNESS, c); + public void setBrightnessConfiguration(BrightnessConfiguration c, + boolean shouldResetShortTermModel) { + Message msg = mHandler.obtainMessage(MSG_CONFIGURE_BRIGHTNESS, + shouldResetShortTermModel ? 1 : 0, /* unused */ 0, c); msg.sendToTarget(); } @@ -3046,6 +3060,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call break; case MSG_CONFIGURE_BRIGHTNESS: mBrightnessConfiguration = (BrightnessConfiguration) msg.obj; + mShouldResetShortTermModel = msg.arg1 == 1; updatePowerState(); break; diff --git a/services/core/java/com/android/server/power/hint/HintManagerService.java b/services/core/java/com/android/server/power/hint/HintManagerService.java index dfa12814a138..8cc1f12643d2 100644 --- a/services/core/java/com/android/server/power/hint/HintManagerService.java +++ b/services/core/java/com/android/server/power/hint/HintManagerService.java @@ -16,9 +16,11 @@ package com.android.server.power.hint; +import android.annotation.NonNull; import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.IUidObserver; +import android.app.StatsManager; import android.content.Context; import android.os.Binder; import android.os.IBinder; @@ -26,13 +28,17 @@ import android.os.IHintManager; import android.os.IHintSession; import android.os.Process; import android.os.RemoteException; +import android.os.SystemProperties; import android.util.ArrayMap; import android.util.ArraySet; import android.util.SparseArray; +import android.util.StatsEvent; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.os.BackgroundThread; import com.android.internal.util.DumpUtils; +import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.Preconditions; import com.android.server.FgThread; import com.android.server.LocalServices; @@ -52,7 +58,7 @@ public final class HintManagerService extends SystemService { private static final boolean DEBUG = false; @VisibleForTesting final long mHintSessionPreferredRate; - // Multi-levle map storing all active AppHintSessions. + // Multi-level map storing all active AppHintSessions. // First level is keyed by the UID of the client process creating the session. // Second level is keyed by an IBinder passed from client process. This is used to observe // when the process exits. The client generally uses the same IBinder object across multiple @@ -69,6 +75,11 @@ public final class HintManagerService extends SystemService { private final ActivityManagerInternal mAmInternal; + private final Context mContext; + + private static final String PROPERTY_SF_ENABLE_CPU_HINT = "debug.sf.enable_adpf_cpu_hint"; + private static final String PROPERTY_HWUI_ENABLE_HINT_MANAGER = "debug.hwui.use_hint_manager"; + @VisibleForTesting final IHintManager.Stub mService = new BinderService(); public HintManagerService(Context context) { @@ -78,6 +89,7 @@ public final class HintManagerService extends SystemService { @VisibleForTesting HintManagerService(Context context, Injector injector) { super(context); + mContext = context; mActiveSessions = new ArrayMap<>(); mNativeWrapper = injector.createNativeWrapper(); mNativeWrapper.halInit(); @@ -108,6 +120,9 @@ public final class HintManagerService extends SystemService { if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) { systemReady(); } + if (phase == SystemService.PHASE_BOOT_COMPLETED) { + registerStatsCallbacks(); + } } private void systemReady() { @@ -122,6 +137,30 @@ public final class HintManagerService extends SystemService { } + private void registerStatsCallbacks() { + final StatsManager statsManager = mContext.getSystemService(StatsManager.class); + statsManager.setPullAtomCallback( + FrameworkStatsLog.ADPF_SYSTEM_COMPONENT_INFO, + null, // use default PullAtomMetadata values + BackgroundThread.getExecutor(), + this::onPullAtom); + } + + private int onPullAtom(int atomTag, @NonNull List<StatsEvent> data) { + if (atomTag == FrameworkStatsLog.ADPF_SYSTEM_COMPONENT_INFO) { + final boolean isSurfaceFlingerUsingCpuHint = + SystemProperties.getBoolean(PROPERTY_SF_ENABLE_CPU_HINT, false); + final boolean isHwuiHintManagerEnabled = + SystemProperties.getBoolean(PROPERTY_HWUI_ENABLE_HINT_MANAGER, false); + + data.add(FrameworkStatsLog.buildStatsEvent( + FrameworkStatsLog.ADPF_SYSTEM_COMPONENT_INFO, + isSurfaceFlingerUsingCpuHint, + isHwuiHintManagerEnabled)); + } + return android.app.StatsManager.PULL_SUCCESS; + } + /** * Wrapper around the static-native methods from native. * @@ -326,6 +365,7 @@ public final class HintManagerService extends SystemService { AppHintSession hs = new AppHintSession(callingUid, callingTgid, tids, token, halSessionPtr, durationNanos); + logPerformanceHintSessionAtom(callingUid, halSessionPtr, durationNanos, tids); synchronized (mLock) { ArrayMap<IBinder, ArraySet<AppHintSession>> tokenMap = mActiveSessions.get(callingUid); @@ -374,6 +414,12 @@ public final class HintManagerService extends SystemService { } } } + + private void logPerformanceHintSessionAtom(int uid, long sessionId, + long targetDuration, int[] tids) { + FrameworkStatsLog.write(FrameworkStatsLog.PERFORMANCE_HINT_SESSION_REPORTED, uid, + sessionId, targetDuration, tids.length); + } } @VisibleForTesting diff --git a/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java b/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java index bb08ef756a14..3834834032cc 100644 --- a/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyFloat; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.clearInvocations; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -97,7 +98,8 @@ public class AutomaticBrightnessControllerTest { mLightSensor = TestUtils.createSensor(Sensor.TYPE_LIGHT, "Light Sensor"); mContext = InstrumentationRegistry.getContext(); - mController = setupController(mLightSensor); + mController = setupController(mLightSensor, BrightnessMappingStrategy.NO_USER_LUX, + BrightnessMappingStrategy.NO_USER_BRIGHTNESS); } @After @@ -109,7 +111,8 @@ public class AutomaticBrightnessControllerTest { } } - private AutomaticBrightnessController setupController(Sensor lightSensor) { + private AutomaticBrightnessController setupController(Sensor lightSensor, float userLux, + float userBrightness) { mClock = new OffsettableClock.Stopped(); mTestLooper = new TestLooper(mClock::now); @@ -134,7 +137,7 @@ public class AutomaticBrightnessControllerTest { mAmbientBrightnessThresholds, mScreenBrightnessThresholds, mAmbientBrightnessThresholdsIdle, mScreenBrightnessThresholdsIdle, mContext, mHbmController, mBrightnessThrottler, mIdleBrightnessMappingStrategy, - AMBIENT_LIGHT_HORIZON_SHORT, AMBIENT_LIGHT_HORIZON_LONG + AMBIENT_LIGHT_HORIZON_SHORT, AMBIENT_LIGHT_HORIZON_LONG, userLux, userBrightness ); when(mHbmController.getCurrentBrightnessMax()).thenReturn(BRIGHTNESS_MAX_FLOAT); @@ -145,9 +148,10 @@ public class AutomaticBrightnessControllerTest { // Configure the brightness controller and grab an instance of the sensor listener, // through which we can deliver fake (for test) sensor values. - controller.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - 0 /* brightness */, false /* userChangedBrightness */, 0 /* adjustment */, - false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + controller.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + 0 /* brightness= */, false /* userChangedBrightness= */, 0 /* adjustment= */, + false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); return controller; } @@ -252,9 +256,10 @@ public class AutomaticBrightnessControllerTest { listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1000)); // User sets brightness to 100 - mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - 0.5f /* brightness */, true /* userChangedBrightness */, 0 /* adjustment */, - false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + 0.5f /* brightness= */, true /* userChangedBrightness= */, 0 /* adjustment= */, + false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); // There should be a user data point added to the mapper. verify(mBrightnessMappingStrategy).addUserDataPoint(1000f, 0.5f); @@ -274,9 +279,10 @@ public class AutomaticBrightnessControllerTest { // User sets brightness to 0.5f when(mBrightnessMappingStrategy.getBrightness(currentLux, null, ApplicationInfo.CATEGORY_UNDEFINED)).thenReturn(0.5f); - mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - 0.5f /* brightness */, true /* userChangedBrightness */, 0 /* adjustment */, - false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + 0.5f /* brightness= */, true /* userChangedBrightness= */, 0 /* adjustment= */, + false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); //Recalculating the spline with RBC enabled, verifying that the short term model is reset, //and the interaction is learnt in short term model @@ -307,9 +313,10 @@ public class AutomaticBrightnessControllerTest { listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1000)); // User sets brightness to 100 - mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - 0.5f /* brightness */, true /* userChangedBrightness */, 0 /* adjustment */, - false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + 0.5f /* brightness= */, true /* userChangedBrightness= */, 0 /* adjustment= */, + false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); // There should be a user data point added to the mapper. verify(mBrightnessMappingStrategy, times(1)).addUserDataPoint(1000f, 0.5f); @@ -325,9 +332,10 @@ public class AutomaticBrightnessControllerTest { verifyNoMoreInteractions(mBrightnessMappingStrategy); // User sets idle brightness to 0.5 - mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - 0.5f /* brightness */, true /* userChangedBrightness */, 0 /* adjustment */, - false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + 0.5f /* brightness= */, true /* userChangedBrightness= */, 0 /* adjustment= */, + false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); // Ensure we use the correct mapping strategy verify(mIdleBrightnessMappingStrategy, times(1)).addUserDataPoint(1000f, 0.5f); @@ -483,17 +491,19 @@ public class AutomaticBrightnessControllerTest { final float throttledBrightness = 0.123f; when(mBrightnessThrottler.getBrightnessCap()).thenReturn(throttledBrightness); when(mBrightnessThrottler.isThrottled()).thenReturn(true); - mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - BRIGHTNESS_MAX_FLOAT /* brightness */, false /* userChangedBrightness */, - 0 /* adjustment */, false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + BRIGHTNESS_MAX_FLOAT /* brightness= */, false /* userChangedBrightness= */, + 0 /* adjustment= */, false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); assertEquals(throttledBrightness, mController.getAutomaticScreenBrightness(), 0.0f); // Remove throttling and notify ABC again when(mBrightnessThrottler.getBrightnessCap()).thenReturn(BRIGHTNESS_MAX_FLOAT); when(mBrightnessThrottler.isThrottled()).thenReturn(false); - mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration */, - BRIGHTNESS_MAX_FLOAT /* brightness */, false /* userChangedBrightness */, - 0 /* adjustment */, false /* userChanged */, DisplayPowerRequest.POLICY_BRIGHT); + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + BRIGHTNESS_MAX_FLOAT /* brightness= */, false /* userChangedBrightness= */, + 0 /* adjustment= */, false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); assertEquals(BRIGHTNESS_MAX_FLOAT, mController.getAutomaticScreenBrightness(), 0.0f); } @@ -584,4 +594,32 @@ public class AutomaticBrightnessControllerTest { assertEquals(lux, sensorValues[0], EPSILON); assertEquals(mClock.now() - AMBIENT_LIGHT_HORIZON_LONG, sensorTimestamps[0]); } + + @Test + public void testResetShortTermModelWhenConfigChanges() { + when(mBrightnessMappingStrategy.isForIdleMode()).thenReturn(false); + when(mBrightnessMappingStrategy.setBrightnessConfiguration(any())).thenReturn(true); + + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + BRIGHTNESS_MAX_FLOAT /* brightness= */, false /* userChangedBrightness= */, + 0 /* adjustment= */, false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ false); + verify(mBrightnessMappingStrategy, never()).clearUserDataPoints(); + + mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */, + BRIGHTNESS_MAX_FLOAT /* brightness= */, false /* userChangedBrightness= */, + 0 /* adjustment= */, false /* userChanged= */, DisplayPowerRequest.POLICY_BRIGHT, + /* shouldResetShortTermModel= */ true); + verify(mBrightnessMappingStrategy).clearUserDataPoints(); + } + + @Test + public void testUseProvidedShortTermModel() { + verify(mBrightnessMappingStrategy, never()).addUserDataPoint(anyFloat(), anyFloat()); + + float userLux = 1000; + float userBrightness = 0.3f; + setupController(mLightSensor, userLux, userBrightness); + verify(mBrightnessMappingStrategy).addUserDataPoint(userLux, userBrightness); + } } |