diff options
author | Xin Li <delphij@google.com> | 2024-03-06 09:30:03 -0800 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2024-03-06 09:30:03 -0800 |
commit | bfaaf12fae65601de1934ab6f552b8c077eded1e (patch) | |
tree | 55f6ac2b7a7773aa7045c186a89cc2a6419861a1 | |
parent | 979f1f462642405aa43b01fa2cee8b92429c2bc7 (diff) | |
parent | 0ae749dd859f6a8296d4743511c1d28edc3e4089 (diff) | |
download | Notification-bfaaf12fae65601de1934ab6f552b8c077eded1e.tar.gz |
Merge Android 14 QPR2 to AOSP main
Bug: 319669529
Merged-In: I58119a9842d5d54225f6aed7463c1b78ada4d6be
Change-Id: Ic85ae64c103d4f24aa65bf2dc6c1529818769811
126 files changed, 1210 insertions, 513 deletions
@@ -42,6 +42,7 @@ android_app { "androidx.palette_palette", "car-assist-client-lib", "car-ui-lib-no-overlayable", + "car-resource-common", "androidx-constraintlayout_constraintlayout", "car-uxr-client-lib" ], @@ -83,6 +84,7 @@ android_app { "androidx.palette_palette", "car-assist-client-lib", "car-ui-lib-no-overlayable", + "car-resource-common", "androidx-constraintlayout_constraintlayout", "car-uxr-client-lib", ], @@ -113,6 +115,7 @@ android_library { "androidx.palette_palette", "car-assist-client-lib", "car-ui-lib-no-overlayable", + "car-resource-common", "androidx-constraintlayout_constraintlayout", "car-uxr-client-lib", ], @@ -150,6 +153,7 @@ android_library { "androidx.palette_palette", "car-assist-client-lib", "car-ui-lib-no-overlayable", + "car-resource-common", "androidx-constraintlayout_constraintlayout", "car-uxr-client-lib", ], diff --git a/res/drawable/ic_mute.xml b/res/drawable/ic_mute.xml index be11b727..8a7f9604 100644 --- a/res/drawable/ic_mute.xml +++ b/res/drawable/ic_mute.xml @@ -16,11 +16,11 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" - android:viewportWidth="17" - android:viewportHeight="20" - android:width="@dimen/mute_icon_width" - android:height="@dimen/mute_icon_height"> + android:viewportWidth="960" + android:viewportHeight="960" + android:width="@dimen/car_action_button_icon_width" + android:height="@dimen/car_action_button_icon_height"> <path android:fillColor="@color/icon_tint" - android:pathData="M8.667,20C9.772,20 10.667,19.105 10.667,18H6.667C6.667,19.105 7.562,20 8.667,20ZM14.667,14V9C14.667,5.925 13.032,3.36 10.167,2.68V2C10.167,1.17 9.497,0.5 8.667,0.5C7.837,0.5 7.167,1.17 7.167,2V2.68C4.302,3.36 2.667,5.925 2.667,9V14L0.667,16V17H16.667V16L14.667,14ZM12.667,15H4.667V9C4.667,6.515 6.182,4.5 8.667,4.5C11.152,4.5 12.667,6.515 12.667,9V15Z"/> + android:pathData="M160,760L160,680L240,680L240,400Q240,317 290,252.5Q340,188 420,168L420,140Q420,115 437.5,97.5Q455,80 480,80Q505,80 522.5,97.5Q540,115 540,140L540,168Q620,188 670,252.5Q720,317 720,400L720,680L800,680L800,760L160,760ZM480,460L480,460L480,460L480,460Q480,460 480,460Q480,460 480,460Q480,460 480,460Q480,460 480,460ZM480,880Q447,880 423.5,856.5Q400,833 400,800L560,800Q560,833 536.5,856.5Q513,880 480,880ZM320,680L640,680L640,400Q640,334 593,287Q546,240 480,240Q414,240 367,287Q320,334 320,400L320,680Z"/> </vector> diff --git a/res/drawable/ic_play_arrow.xml b/res/drawable/ic_play_arrow.xml index 0d221d89..c19ea6fd 100644 --- a/res/drawable/ic_play_arrow.xml +++ b/res/drawable/ic_play_arrow.xml @@ -16,12 +16,11 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" - android:viewportWidth="14" - android:viewportHeight="18" - android:width="@dimen/play_arrow_width" - android:height="@dimen/play_arrow_height"> + android:viewportWidth="960" + android:viewportHeight="960" + android:width="@dimen/car_action_button_icon_width" + android:height="@dimen/car_action_button_icon_height"> <path - android:fillColor="@color/icon_tint" - android:fillType="evenOdd" - android:pathData="M14,9L0,18V0L14,9Z"/> + android:fillColor="@color/play_icon_tint" + android:pathData="M320,760L320,200L760,480L320,760ZM400,480L400,480L400,480L400,480ZM400,614L610,480L400,346L400,614Z"/> </vector> diff --git a/res/drawable/ic_reply.xml b/res/drawable/ic_reply.xml index a4e85db9..291ee174 100644 --- a/res/drawable/ic_reply.xml +++ b/res/drawable/ic_reply.xml @@ -16,11 +16,11 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" - android:viewportWidth="18" - android:viewportHeight="14" - android:width="@dimen/reply_icon_width" - android:height="@dimen/reply_icon_height"> + android:viewportWidth="960" + android:viewportHeight="960" + android:width="@dimen/car_action_button_icon_width" + android:height="@dimen/car_action_button_icon_height"> <path android:fillColor="@color/icon_tint" - android:pathData="M13,5H3.83L6,2.83L7.41,1.42L6,0L0,6L6,12L7.41,10.59L6,9.17L3.83,7H13C14.65,7 16,8.35 16,10V14H18V10C18,7.24 15.76,5 13,5Z"/> + android:pathData="M760,760L760,600Q760,550 725,515Q690,480 640,480L273,480L417,624L360,680L120,440L360,200L417,256L273,400L640,400Q723,400 781.5,458.5Q840,517 840,600L840,760L760,760Z"/> </vector>
\ No newline at end of file diff --git a/res/drawable/ic_unmute.xml b/res/drawable/ic_unmute.xml index 0db921c8..b14cdab1 100644 --- a/res/drawable/ic_unmute.xml +++ b/res/drawable/ic_unmute.xml @@ -14,13 +14,13 @@ ~ limitations under the License. --> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:autoMirrored="true" - android:viewportWidth="18" - android:viewportHeight="20" - android:width="@dimen/unmute_icon_width" - android:height="@dimen/unmute_icon_height"> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:autoMirrored="true" + android:viewportWidth="960" + android:viewportHeight="960" + android:width="@dimen/car_action_button_icon_width" + android:height="@dimen/car_action_button_icon_height"> <path android:fillColor="@color/dark_icon_tint" - android:pathData="M16.667,16.695L4.507,4.15L1.942,1.505L0.667,2.775L3.467,5.575L3.472,5.58C2.947,6.57 2.667,7.74 2.667,9V14L0.667,16V17H14.397L16.397,19L17.667,17.725L16.667,16.695ZM8.667,20C9.772,20 10.667,19.105 10.667,18H6.667C6.667,19.105 7.562,20 8.667,20ZM14.667,12.68V9C14.667,5.925 13.032,3.36 10.167,2.68V2C10.167,1.17 9.497,0.5 8.667,0.5C7.837,0.5 7.167,1.17 7.167,2V2.68C7.022,2.715 6.882,2.755 6.742,2.8C6.637,2.835 6.537,2.87 6.437,2.91C6.437,2.91 6.432,2.91 6.432,2.915C6.427,2.915 6.422,2.92 6.417,2.92C6.187,3.01 5.962,3.115 5.742,3.23C5.737,3.23 5.732,3.235 5.727,3.235L14.667,12.68Z"/> + android:pathData="M160,760L160,680L240,680L240,400Q240,367 248.5,335Q257,303 274,274L334,334Q327,350 323.5,366.5Q320,383 320,400L320,680L568,680L56,168L112,112L848,848L792,904L646,760L160,760ZM720,606L640,526L640,400Q640,334 593,287Q546,240 480,240Q454,240 430,248Q406,256 386,272L328,214Q348,198 371,186Q394,174 420,168L420,140Q420,115 437.5,97.5Q455,80 480,80Q505,80 522.5,97.5Q540,115 540,140L540,168Q620,188 670,252.5Q720,317 720,400L720,606ZM444,556L444,556L444,556L444,556L444,556ZM480,880Q447,880 423.5,856.5Q400,833 400,800L560,800Q560,833 536.5,856.5Q513,880 480,880ZM513,399Q513,399 513,399Q513,399 513,399L513,399L513,399Q513,399 513,399Q513,399 513,399Z"/> </vector> diff --git a/res/layout/basic_headsup_notification_template.xml b/res/layout/basic_headsup_notification_template.xml index 9712d068..57c3df53 100644 --- a/res/layout/basic_headsup_notification_template.xml +++ b/res/layout/basic_headsup_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/inner_template_view" diff --git a/res/layout/basic_notification_template.xml b/res/layout/basic_notification_template.xml index 48addb04..e9574bff 100644 --- a/res/layout/basic_notification_template.xml +++ b/res/layout/basic_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/call_headsup_notification_template.xml b/res/layout/call_headsup_notification_template.xml index a7db756c..3ed42455 100644 --- a/res/layout/call_headsup_notification_template.xml +++ b/res/layout/call_headsup_notification_template.xml @@ -23,13 +23,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" @@ -63,7 +59,7 @@ android:layout_marginTop="@dimen/card_body_margin_top" android:layout_marginBottom="@dimen/card_body_margin_bottom" app:maxLines="@integer/config_headsUpNotificationMaxBodyLines" - app:showBigIcon="false" + app:showBigIcon="true" app:isHeadsUp="true"/> <com.android.car.notification.template.CarNotificationActionsView @@ -72,7 +68,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/notification_body" - android:layout_marginBottom="@dimen/card_body_margin_bottom"/> + android:layout_marginBottom="@dimen/card_body_margin_bottom" + app:categoryCall="true"/> </RelativeLayout> </androidx.cardview.widget.CardView> </com.android.car.ui.FocusArea> diff --git a/res/layout/call_notification_template.xml b/res/layout/call_notification_template.xml index 82961601..5ddeec87 100644 --- a/res/layout/call_notification_template.xml +++ b/res/layout/call_notification_template.xml @@ -23,13 +23,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" @@ -64,7 +60,7 @@ android:layout_marginTop="@dimen/card_body_margin_top" android:layout_marginBottom="@dimen/card_body_margin_bottom" app:maxLines="@integer/config_notificationPanelMaxBodyLines" - app:showBigIcon="false" + app:showBigIcon="true" app:isHeadsUp="false"/> <com.android.car.notification.template.CarNotificationActionsView @@ -73,7 +69,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/notification_body" - android:layout_marginBottom="@dimen/card_body_margin_bottom"/> + android:layout_marginBottom="@dimen/card_body_margin_bottom" + app:categoryCall="true"/> </RelativeLayout> </androidx.cardview.widget.CardView> </FrameLayout> diff --git a/res/layout/car_emergency_headsup_notification_template.xml b/res/layout/car_emergency_headsup_notification_template.xml index 97b01a35..0108b70d 100644 --- a/res/layout/car_emergency_headsup_notification_template.xml +++ b/res/layout/car_emergency_headsup_notification_template.xml @@ -23,12 +23,8 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/car_emergency_notification_template.xml b/res/layout/car_emergency_notification_template.xml index 7acf1adc..6aef64b1 100644 --- a/res/layout/car_emergency_notification_template.xml +++ b/res/layout/car_emergency_notification_template.xml @@ -22,12 +22,8 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/car_information_headsup_notification_template.xml b/res/layout/car_information_headsup_notification_template.xml index 83494ec0..b4a635e8 100644 --- a/res/layout/car_information_headsup_notification_template.xml +++ b/res/layout/car_information_headsup_notification_template.xml @@ -23,13 +23,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/car_information_notification_template.xml b/res/layout/car_information_notification_template.xml index 20afc61c..96b86170 100644 --- a/res/layout/car_information_notification_template.xml +++ b/res/layout/car_information_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/car_notification_body_view.xml b/res/layout/car_notification_body_view.xml index 0164d08c..e195eb10 100644 --- a/res/layout/car_notification_body_view.xml +++ b/res/layout/car_notification_body_view.xml @@ -25,15 +25,6 @@ android:layout_marginStart="@dimen/body_big_icon_margin" style="@style/NotificationBodyImageIcon"/> - <DateTimeView - android:id="@+id/time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignTop="@id/notification_body_content" - android:layout_alignParentEnd="true" - android:layout_marginEnd="@dimen/time_margin" - style="@style/NotificationHeaderText"/> - <TextView android:id="@+id/notification_body_title" android:layout_width="wrap_content" @@ -58,6 +49,17 @@ android:focusable="false" android:scaleType="fitXY"/> + <DateTimeView + android:id="@+id/time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toEndOf="@id/notification_body_title_icon" + android:layout_alignTop="@id/notification_body_title" + android:layout_alignBottom="@id/notification_body_title" + android:layout_marginEnd="@dimen/notification_body_title_margin" + android:gravity="center_vertical" + style="@style/NotificationHeaderText"/> + <TextView android:id="@+id/notification_body_content" android:layout_width="wrap_content" diff --git a/res/layout/car_warning_headsup_notification_template.xml b/res/layout/car_warning_headsup_notification_template.xml index 83494ec0..b4a635e8 100644 --- a/res/layout/car_warning_headsup_notification_template.xml +++ b/res/layout/car_warning_headsup_notification_template.xml @@ -23,13 +23,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/car_warning_notification_template.xml b/res/layout/car_warning_notification_template.xml index 814046b6..0b8e40b8 100644 --- a/res/layout/car_warning_notification_template.xml +++ b/res/layout/car_warning_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/inbox_headsup_notification_template.xml b/res/layout/inbox_headsup_notification_template.xml index 5cea3abe..d96210d8 100644 --- a/res/layout/inbox_headsup_notification_template.xml +++ b/res/layout/inbox_headsup_notification_template.xml @@ -23,13 +23,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/inbox_notification_template.xml b/res/layout/inbox_notification_template.xml index 3a531153..fb1412a3 100644 --- a/res/layout/inbox_notification_template.xml +++ b/res/layout/inbox_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/media_notification_template.xml b/res/layout/media_notification_template.xml index 6231699c..0a836712 100644 --- a/res/layout/media_notification_template.xml +++ b/res/layout/media_notification_template.xml @@ -22,12 +22,8 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <include layout="@layout/media_notification_template_inner" diff --git a/res/layout/message_headsup_notification_template.xml b/res/layout/message_headsup_notification_template.xml index d0235346..2e657d2e 100644 --- a/res/layout/message_headsup_notification_template.xml +++ b/res/layout/message_headsup_notification_template.xml @@ -23,13 +23,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/message_notification_template.xml b/res/layout/message_notification_template.xml index 5f53c23d..e290f332 100644 --- a/res/layout/message_notification_template.xml +++ b/res/layout/message_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/navigation_headsup_notification_template.xml b/res/layout/navigation_headsup_notification_template.xml index b5a6227c..650d9b71 100644 --- a/res/layout/navigation_headsup_notification_template.xml +++ b/res/layout/navigation_headsup_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_headsup_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_headsup_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/HeadsUpNotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/layout/progress_notification_template.xml b/res/layout/progress_notification_template.xml index 2b6cd1ee..d2fec622 100644 --- a/res/layout/progress_notification_template.xml +++ b/res/layout/progress_notification_template.xml @@ -22,13 +22,9 @@ <androidx.cardview.widget.CardView android:id="@+id/card_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginEnd="@dimen/notification_card_margin_horizontal" - android:layout_marginStart="@dimen/notification_card_margin_horizontal" app:cardBackgroundColor="@color/notification_background_color" - app:cardCornerRadius="@dimen/notification_card_radius"> + app:cardCornerRadius="@dimen/notification_card_radius" + style="@style/NotificationCard"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index cdbaa57c..a2251f3d 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Motorkennisgewingbestuurder"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Speel"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Antwoord"</string> <string name="action_mute_short" msgid="5239851786101022633">"Demp"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Onlangs"</string> <string name="notification_older" msgid="8162161020296499690">"Ouer kennisgewings"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Geen kennisgewings nie"</string> - <string name="collapse_group" msgid="4923097735600949715">"Vou groep in"</string> + <string name="collapse_group" msgid="3487426973871208501">"Wys minder"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> meer vanaf <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Wys nog <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index f3bad067..3613cebc 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"የመኪና ማሳወቂያ አስተዳዳሪ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"አጫውት"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"መልስ"</string> <string name="action_mute_short" msgid="5239851786101022633">"ድምጸ-ከል አድርግ"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"የቅርብ ጊዜዎቹ"</string> <string name="notification_older" msgid="8162161020296499690">"የቆዩ ማሳወቂያዎች"</string> <string name="empty_notification_header" msgid="4928379791607839720">"ምንም ማሳወቂያዎች የሉም"</string> - <string name="collapse_group" msgid="4923097735600949715">"ቡድን ሰብስብ"</string> + <string name="collapse_group" msgid="3487426973871208501">"ያነሰ አሳይ"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> ተጨማሪ ከ <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"ተጨማሪ <xliff:g id="COUNT">%d</xliff:g> አሳይ"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 5035bb9d..4dc3c279 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"إدارة الإشعارات في السيارة"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"تشغيل"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ردّ"</string> <string name="action_mute_short" msgid="5239851786101022633">"تجاهل"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"الإشعارات الحديثة"</string> <string name="notification_older" msgid="8162161020296499690">"الإشعارات الأقدم"</string> <string name="empty_notification_header" msgid="4928379791607839720">"ليست هناك أي إشعارات."</string> - <string name="collapse_group" msgid="4923097735600949715">"تصغير المجموعة"</string> + <string name="collapse_group" msgid="3487426973871208501">"عرض تفاصيل أقل"</string> <string name="show_more_from_app" msgid="4270626118092846628">"عرض <xliff:g id="COUNT">%1$d</xliff:g> إشعار آخر من <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"عرض <xliff:g id="COUNT">%d</xliff:g> إشعار آخر"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index a4188f0a..06e320c1 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"গাড়ীৰ জাননীৰ পৰিচালক"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"প্লে\' কৰক"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"উত্তৰ দিয়ক"</string> <string name="action_mute_short" msgid="5239851786101022633">"মিউট কৰক"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"শেহতীয়া"</string> <string name="notification_older" msgid="8162161020296499690">"পুৰণি জাননী"</string> <string name="empty_notification_header" msgid="4928379791607839720">"কোনো জাননী নাই"</string> - <string name="collapse_group" msgid="4923097735600949715">"গোট সংকোচন কৰক"</string> + <string name="collapse_group" msgid="3487426973871208501">"কমকৈ দেখুৱাওক"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g>ৰ পৰা আৰু <xliff:g id="COUNT">%1$d</xliff:g> টা"</string> <string name="show_count_more" msgid="480555295700318609">"আৰু <xliff:g id="COUNT">%d</xliff:g>টা দেখুৱাওক"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 32fc04dc..d7e04245 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Avtomobil üçün bildiriş meneceri"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Oyun"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Cavablayın"</string> <string name="action_mute_short" msgid="5239851786101022633">"Səssiz"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Sonuncular"</string> <string name="notification_older" msgid="8162161020296499690">"Köhnə bildirişlər"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Bildiriş yoxdur"</string> - <string name="collapse_group" msgid="4923097735600949715">"Qrupu yığcamlaşdırın"</string> + <string name="collapse_group" msgid="3487426973871208501">"Daha az"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> tətbiqində daha <xliff:g id="COUNT">%1$d</xliff:g> bildiriş"</string> <string name="show_count_more" msgid="480555295700318609">"Daha <xliff:g id="COUNT">%d</xliff:g> göstərin"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index fe5318f9..5a755043 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Menadžer obaveštenja za automobil"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Pusti"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odgovori"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignoriši"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nedavna"</string> <string name="notification_older" msgid="8162161020296499690">"Starija obaveštenja"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nema obaveštenja"</string> - <string name="collapse_group" msgid="4923097735600949715">"Skupi grupu"</string> + <string name="collapse_group" msgid="3487426973871208501">"Prikaži manje"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Još <xliff:g id="COUNT">%1$d</xliff:g> iz <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Prikaži još <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 133b7aa7..a90a7fa5 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Менеджар апавяшчэнняў у аўто"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Прайграць"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Адказаць"</string> <string name="action_mute_short" msgid="5239851786101022633">"Выключыць гук"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Нядаўнія"</string> <string name="notification_older" msgid="8162161020296499690">"Старыя апавяшчэнні"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Апавяшчэнняў няма"</string> - <string name="collapse_group" msgid="4923097735600949715">"Згарнуць групу"</string> + <string name="collapse_group" msgid="3487426973871208501">"Згарнуць"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Яшчэ <xliff:g id="COUNT">%1$d</xliff:g> ад праграмы \"<xliff:g id="APP">%2$s</xliff:g>\""</string> <string name="show_count_more" msgid="480555295700318609">"Паказаць яшчэ <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 2dc6660a..c1070b57 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Мениджър на известията в автомобила"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Пускане"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Отговор"</string> <string name="action_mute_short" msgid="5239851786101022633">"Спиране"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Скорошни"</string> <string name="notification_older" msgid="8162161020296499690">"По-стари известия"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Няма известия"</string> - <string name="collapse_group" msgid="4923097735600949715">"Свиване на групата"</string> + <string name="collapse_group" msgid="3487426973871208501">"По-малко"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Още <xliff:g id="COUNT">%1$d</xliff:g> от <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Показване на още <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 36018416..fccb1bcd 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"গাড়ির বিজ্ঞপ্তি ম্যানেজার"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"চালান"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"উত্তর দিন"</string> <string name="action_mute_short" msgid="5239851786101022633">"মিউট করুন"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"সাম্প্রতিক বিজ্ঞপ্তি"</string> <string name="notification_older" msgid="8162161020296499690">"পুরনো বিজ্ঞপ্তি"</string> <string name="empty_notification_header" msgid="4928379791607839720">"কোনও বিজ্ঞপ্তি নেই"</string> - <string name="collapse_group" msgid="4923097735600949715">"গ্রুপ আড়াল করুন"</string> + <string name="collapse_group" msgid="3487426973871208501">"কম দেখুন"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> থেকে আরও <xliff:g id="COUNT">%1$d</xliff:g>টি বিজ্ঞপ্তি"</string> <string name="show_count_more" msgid="480555295700318609">"আরও <xliff:g id="COUNT">%d</xliff:g> দেখুন"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 75bdb76c..2594cefb 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Upravitelj obavještenjima automobila"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Pokreni"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odgovori"</string> <string name="action_mute_short" msgid="5239851786101022633">"Isključi zvuk"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nedavna obavještenja"</string> <string name="notification_older" msgid="8162161020296499690">"Starija obavještenja"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nema obavještenja"</string> - <string name="collapse_group" msgid="4923097735600949715">"Suzi grupu"</string> + <string name="collapse_group" msgid="3487426973871208501">"Prikaži manje"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Još <xliff:g id="COUNT">%1$d</xliff:g> iz aplikacije <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Prikaži još <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 0c8c872b..aae22013 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Gestor de notificacions del cotxe"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Reprodueix"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Respon"</string> <string name="action_mute_short" msgid="5239851786101022633">"Silencia"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recents"</string> <string name="notification_older" msgid="8162161020296499690">"Notificacions antigues"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Cap notificació"</string> - <string name="collapse_group" msgid="4923097735600949715">"Replega el grup"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostra\'n menys"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> més de l\'aplicació <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostra\'n <xliff:g id="COUNT">%d</xliff:g> més"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index b8ab9e0b..0d9018ea 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Správce oznámení v autě"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Přehrát"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odpověď"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ztlumit"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Poslední"</string> <string name="notification_older" msgid="8162161020296499690">"Starší oznámení"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Žádná oznámení"</string> - <string name="collapse_group" msgid="4923097735600949715">"Sbalit skupinu"</string> + <string name="collapse_group" msgid="3487426973871208501">"Zobrazit méně"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Další oznámení z aplikace <xliff:g id="APP">%2$s</xliff:g> (<xliff:g id="COUNT">%1$d</xliff:g>)"</string> <string name="show_count_more" msgid="480555295700318609">"Zobrazit více (<xliff:g id="COUNT">%d</xliff:g>)"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 503a17c4..cf7f8691 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Bilens notifikationsadministrator"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Afspil"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Svar"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignorer"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Seneste"</string> <string name="notification_older" msgid="8162161020296499690">"Ældre notifikationer"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Ingen notifikationer"</string> - <string name="collapse_group" msgid="4923097735600949715">"Skjul gruppe"</string> + <string name="collapse_group" msgid="3487426973871208501">"Vis mindre"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> mere fra <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Se <xliff:g id="COUNT">%d</xliff:g> flere"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 92af88ec..0cdc851d 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Auto-Benachrichtigungsmanager"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Wiedergeben"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Antworten"</string> <string name="action_mute_short" msgid="5239851786101022633">"Stummschalten"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Letzte"</string> <string name="notification_older" msgid="8162161020296499690">"Ältere Benachrichtigungen"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Keine Benachrichtigungen"</string> - <string name="collapse_group" msgid="4923097735600949715">"Gruppe minimieren"</string> + <string name="collapse_group" msgid="3487426973871208501">"Weniger anzeigen"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> weitere aus <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> weitere anzeigen"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 9cb54883..706575b4 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Πρόγραμμα διαχείρισης ειδοποιήσεων αυτοκινήτου"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Αναπαραγωγή"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Απάντηση"</string> <string name="action_mute_short" msgid="5239851786101022633">"Σίγαση"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Πρόσφατες"</string> <string name="notification_older" msgid="8162161020296499690">"Παλαιότερες ειδοποιήσεις"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Δεν υπάρχουν ειδοποιήσεις"</string> - <string name="collapse_group" msgid="4923097735600949715">"Σύμπτυξη ομάδας"</string> + <string name="collapse_group" msgid="3487426973871208501">"Εμφάνιση λιγότερων"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> ειδοποιήσεις ακόμη από <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Εμφάνιση <xliff:g id="COUNT">%d</xliff:g> ακόμη"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 3781e26c..4d3fbe03 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Car notification manager"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Play"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Reply"</string> <string name="action_mute_short" msgid="5239851786101022633">"Mute"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recent"</string> <string name="notification_older" msgid="8162161020296499690">"Older notifications"</string> <string name="empty_notification_header" msgid="4928379791607839720">"No notifications"</string> - <string name="collapse_group" msgid="4923097735600949715">"Collapse group"</string> + <string name="collapse_group" msgid="3487426973871208501">"Show less"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> more from <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Show <xliff:g id="COUNT">%d</xliff:g> more"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 0f95cd73..77be67fe 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Car notification manager"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Play"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Reply"</string> <string name="action_mute_short" msgid="5239851786101022633">"Mute"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recents"</string> <string name="notification_older" msgid="8162161020296499690">"Older notifications"</string> <string name="empty_notification_header" msgid="4928379791607839720">"No notifications"</string> - <string name="collapse_group" msgid="4923097735600949715">"Collapse group"</string> + <string name="collapse_group" msgid="3487426973871208501">"Show less"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> more from <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Show <xliff:g id="COUNT">%d</xliff:g> more"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 3781e26c..4d3fbe03 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Car notification manager"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Play"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Reply"</string> <string name="action_mute_short" msgid="5239851786101022633">"Mute"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recent"</string> <string name="notification_older" msgid="8162161020296499690">"Older notifications"</string> <string name="empty_notification_header" msgid="4928379791607839720">"No notifications"</string> - <string name="collapse_group" msgid="4923097735600949715">"Collapse group"</string> + <string name="collapse_group" msgid="3487426973871208501">"Show less"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> more from <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Show <xliff:g id="COUNT">%d</xliff:g> more"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 3781e26c..4d3fbe03 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Car notification manager"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Play"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Reply"</string> <string name="action_mute_short" msgid="5239851786101022633">"Mute"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recent"</string> <string name="notification_older" msgid="8162161020296499690">"Older notifications"</string> <string name="empty_notification_header" msgid="4928379791607839720">"No notifications"</string> - <string name="collapse_group" msgid="4923097735600949715">"Collapse group"</string> + <string name="collapse_group" msgid="3487426973871208501">"Show less"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> more from <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Show <xliff:g id="COUNT">%d</xliff:g> more"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 6fe55be6..ba7ba25b 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Car notification manager"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Play"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Reply"</string> <string name="action_mute_short" msgid="5239851786101022633">"Mute"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recents"</string> <string name="notification_older" msgid="8162161020296499690">"Older notifications"</string> <string name="empty_notification_header" msgid="4928379791607839720">"No notifications"</string> - <string name="collapse_group" msgid="4923097735600949715">"Collapse group"</string> + <string name="collapse_group" msgid="3487426973871208501">"Show less"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> more from <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Show <xliff:g id="COUNT">%d</xliff:g> more"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index b389d5d9..deb42af1 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Administrador de notificaciones en el vehículo"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Reproducir"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Responder"</string> <string name="action_mute_short" msgid="5239851786101022633">"Silenciar"</string> @@ -28,14 +29,14 @@ <string name="toast_message_sent_success" msgid="1159956191974273064">"Se envió correctamente el mensaje."</string> <string name="notification_service_label" msgid="7512186049723777468">"Servicio de detección de notificaciones del vehículo"</string> <string name="notifications" msgid="2865534625906329283">"Centro de notificaciones"</string> - <string name="clear_all" msgid="1845314281571237722">"Borrar todo"</string> + <string name="clear_all" msgid="1845314281571237722">"Cerrar todo"</string> <string name="ellipsized_string" msgid="6993649229498857557">"…"</string> <string name="show_more" msgid="7291378544926443344">"Mostrar más"</string> <string name="notification_header" msgid="324550431063568049">"Notificaciones"</string> <string name="notification_recents" msgid="5855769440781958546">"Recientes"</string> <string name="notification_older" msgid="8162161020296499690">"Notificaciones anteriores"</string> <string name="empty_notification_header" msgid="4928379791607839720">"No hay notificaciones"</string> - <string name="collapse_group" msgid="4923097735600949715">"Contraer grupo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostrar menos"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> más de <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostrar <xliff:g id="COUNT">%d</xliff:g> más"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 07202ef0..c71df26b 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Gestor de notificaciones del coche"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Reproducir"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Responder"</string> <string name="action_mute_short" msgid="5239851786101022633">"Silenciar"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recientes"</string> <string name="notification_older" msgid="8162161020296499690">"Notificaciones antiguas"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Sin notificaciones"</string> - <string name="collapse_group" msgid="4923097735600949715">"Ocultar grupo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostrar menos"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> más de <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostrar <xliff:g id="COUNT">%d</xliff:g> más"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index c8283db5..3618f4df 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Auto märguandehaldur"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Esita"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Vastamine"</string> <string name="action_mute_short" msgid="5239851786101022633">"Vaigista"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Hiljutised"</string> <string name="notification_older" msgid="8162161020296499690">"Vanemad märguanded"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Märguandeid pole"</string> - <string name="collapse_group" msgid="4923097735600949715">"Ahenda grupp"</string> + <string name="collapse_group" msgid="3487426973871208501">"Kuva vähem"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Veel <xliff:g id="COUNT">%1$d</xliff:g> rakendusest <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Kuva veel <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 5b9beffb..b0c4fa97 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Autoko jakinarazpenen kudeatzailea"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Erreproduzitu"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Erantzun"</string> <string name="action_mute_short" msgid="5239851786101022633">"Desaktibatu audioa"</string> @@ -32,10 +33,10 @@ <string name="ellipsized_string" msgid="6993649229498857557">"…"</string> <string name="show_more" msgid="7291378544926443344">"Erakutsi gehiago"</string> <string name="notification_header" msgid="324550431063568049">"Jakinarazpenak"</string> - <string name="notification_recents" msgid="5855769440781958546">"Azkenak"</string> + <string name="notification_recents" msgid="5855769440781958546">"Azkenaldikoak"</string> <string name="notification_older" msgid="8162161020296499690">"Jakinarazpen zaharragoak"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Ez dago jakinarazpenik"</string> - <string name="collapse_group" msgid="4923097735600949715">"Tolestu taldea"</string> + <string name="collapse_group" msgid="3487426973871208501">"Erakutsi gutxiago"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> aplikazioaren <xliff:g id="COUNT">%1$d</xliff:g> gehiago"</string> <string name="show_count_more" msgid="480555295700318609">"Erakutsi beste <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 281ad6ce..e438b2f6 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"مدیر اعلان خودرو"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"پخش"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"پاسخ دادن"</string> <string name="action_mute_short" msgid="5239851786101022633">"صامت کردن"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"موارد اخیر"</string> <string name="notification_older" msgid="8162161020296499690">"اعلانهای قدیمیتر"</string> <string name="empty_notification_header" msgid="4928379791607839720">"بدون اعلان"</string> - <string name="collapse_group" msgid="4923097735600949715">"کوچک کردن گروه"</string> + <string name="collapse_group" msgid="3487426973871208501">"نمایش موارد کمتر"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> اعلان بیشتر از <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"نمایش <xliff:g id="COUNT">%d</xliff:g> مورد دیگر"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 7dd9ae4a..fa27c7d4 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Auton ilmoitusten hallinta"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Toista"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Vastaa"</string> <string name="action_mute_short" msgid="5239851786101022633">"Mykistä"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Viimeaikaiset"</string> <string name="notification_older" msgid="8162161020296499690">"Vanhemmat ilmoitukset"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Ei ilmoituksia"</string> - <string name="collapse_group" msgid="4923097735600949715">"Tiivistä ryhmä"</string> + <string name="collapse_group" msgid="3487426973871208501">"Näytä vähemmän"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> muuta (<xliff:g id="APP">%2$s</xliff:g>)"</string> <string name="show_count_more" msgid="480555295700318609">"Näytä vielä <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index d25ffbb6..1083a41d 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Gestionnaire de notifications de voiture"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Lire"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Répondre"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignorer"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Récentes"</string> <string name="notification_older" msgid="8162161020296499690">"Notifications plus anciennes"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Aucune notification"</string> - <string name="collapse_group" msgid="4923097735600949715">"Réduire le groupe"</string> + <string name="collapse_group" msgid="3487426973871208501">"Afficher moins"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> notifications de plus de <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Afficher <xliff:g id="COUNT">%d</xliff:g> de plus"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index fef16529..2f643e0b 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Gestionnaire des notifications de la voiture"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Lire"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Répondre"</string> <string name="action_mute_short" msgid="5239851786101022633">"Désactiver"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Récentes"</string> <string name="notification_older" msgid="8162161020296499690">"Notifications plus anciennes"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Aucune notification"</string> - <string name="collapse_group" msgid="4923097735600949715">"Réduire le groupe"</string> + <string name="collapse_group" msgid="3487426973871208501">"Afficher moins"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> autres de <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Afficher <xliff:g id="COUNT">%d</xliff:g> de plus"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 1ca8835d..5969995d 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Xestor de notificacións de vehículos"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Reproducir"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Responder"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignorar"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recentes"</string> <string name="notification_older" msgid="8162161020296499690">"Notificacións máis antigas"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Non hai notificacións"</string> - <string name="collapse_group" msgid="4923097735600949715">"Contraer grupo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostrar menos"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> máis de <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostrar <xliff:g id="COUNT">%d</xliff:g> máis"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 647417cb..2c068422 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"કાર નોટિફિકેશન મેનેજર"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ચલાવો"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"જવાબ આપો"</string> <string name="action_mute_short" msgid="5239851786101022633">"મ્યૂટ કરો"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"તાજેતરનાં"</string> <string name="notification_older" msgid="8162161020296499690">"જૂના નોટિફિકેશન"</string> <string name="empty_notification_header" msgid="4928379791607839720">"કોઈ નોટિફિકેશન નથી"</string> - <string name="collapse_group" msgid="4923097735600949715">"ગ્રૂપ નાનું કરો"</string> + <string name="collapse_group" msgid="3487426973871208501">"ઓછું બતાવો"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> તરફથી વધુ <xliff:g id="COUNT">%1$d</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">" <xliff:g id="COUNT">%d</xliff:g> વધુ બતાવો"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 495b3a60..2e23260a 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"कार में सूचना मैनेजर"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"चलाएं"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"जवाब दें"</string> <string name="action_mute_short" msgid="5239851786101022633">"म्यूट करें"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"हाल ही की सूचनाएं"</string> <string name="notification_older" msgid="8162161020296499690">"पुरानी सूचनाएं"</string> <string name="empty_notification_header" msgid="4928379791607839720">"कोई सूचना नहीं है"</string> - <string name="collapse_group" msgid="4923097735600949715">"ग्रुप को छोटा करें"</string> + <string name="collapse_group" msgid="3487426973871208501">"कम दिखाएं"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> से <xliff:g id="COUNT">%1$d</xliff:g> और सूचनाएं"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> और दिखाएं"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 12b8fb2f..375edd3d 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Upravitelj obavijestima automobila"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Pokreni"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odgovori"</string> <string name="action_mute_short" msgid="5239851786101022633">"Zanemari"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Najnovije"</string> <string name="notification_older" msgid="8162161020296499690">"Starije obavijesti"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nema obavijesti"</string> - <string name="collapse_group" msgid="4923097735600949715">"Sažimanje grupe"</string> + <string name="collapse_group" msgid="3487426973871208501">"Prikaži manje"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Još <xliff:g id="COUNT">%1$d</xliff:g> obavijesti aplikacije <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Prikaži još <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index d9cc6f3a..ef63d3c5 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Autós értesítések kezelője"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Lejátszás"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Válasz"</string> <string name="action_mute_short" msgid="5239851786101022633">"Némítás"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Legutóbbiak"</string> <string name="notification_older" msgid="8162161020296499690">"Régebbi értesítések"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nincs értesítés"</string> - <string name="collapse_group" msgid="4923097735600949715">"Csoport összecsukása"</string> + <string name="collapse_group" msgid="3487426973871208501">"Kevesebb mutatása"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> további értesítés innen: <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"További <xliff:g id="COUNT">%d</xliff:g> megjelenítése"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index b2cf64a5..335d2608 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Ավտոմեքենայում ծանուցումների կառավարիչ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Նվագարկել"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Պատասխանել"</string> <string name="action_mute_short" msgid="5239851786101022633">"Անջատել ծանուցումը"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Վերջինները"</string> <string name="notification_older" msgid="8162161020296499690">"Ավելի հին ծանուցումներ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Ծանուցումներ չկան"</string> - <string name="collapse_group" msgid="4923097735600949715">"Ծալել խումբը"</string> + <string name="collapse_group" msgid="3487426973871208501">"Ծալել"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> այլ ապրանք <xliff:g id="APP">%2$s</xliff:g>-ից"</string> <string name="show_count_more" msgid="480555295700318609">"Ցուցադրել ևս <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 0672702f..1eaebccb 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Pengelola notifikasi mobil"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Putar"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Balas"</string> <string name="action_mute_short" msgid="5239851786101022633">"Bisukan"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Terbaru"</string> <string name="notification_older" msgid="8162161020296499690">"Notifikasi lama"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Tidak ada notifikasi"</string> - <string name="collapse_group" msgid="4923097735600949715">"Ciutkan grup"</string> + <string name="collapse_group" msgid="3487426973871208501">"Tampilkan sedikit"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> lainnya dari <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Tampilkan <xliff:g id="COUNT">%d</xliff:g> lainnya"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 93e2d71e..e6048dae 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Umsjón bílatilkynninga"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Spila"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Svara"</string> <string name="action_mute_short" msgid="5239851786101022633">"Þagga"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nýlegt"</string> <string name="notification_older" msgid="8162161020296499690">"Eldri tilkynningar"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Engar tilkynningar"</string> - <string name="collapse_group" msgid="4923097735600949715">"Draga hóp saman"</string> + <string name="collapse_group" msgid="3487426973871208501">"Sýna minna"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> í viðbót frá <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Sýna <xliff:g id="COUNT">%d</xliff:g> í viðbót"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 15f35288..df8037bc 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Sistema di gestione delle notifiche dell\'auto"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Riproduci"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Rispondi"</string> <string name="action_mute_short" msgid="5239851786101022633">"Disattiva audio"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recenti"</string> <string name="notification_older" msgid="8162161020296499690">"Notifiche meno recenti"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nessuna notifica"</string> - <string name="collapse_group" msgid="4923097735600949715">"Comprimi gruppo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostra meno"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Altre <xliff:g id="COUNT">%1$d</xliff:g> da <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostra altre <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 3ec7251a..2ed82ef5 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"מנהל ההתראות של הרכב"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"הפעלה"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"תשובה"</string> <string name="action_mute_short" msgid="5239851786101022633">"השתקה"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"התראות אחרונות"</string> <string name="notification_older" msgid="8162161020296499690">"התראות ישנות יותר"</string> <string name="empty_notification_header" msgid="4928379791607839720">"אין התראות"</string> - <string name="collapse_group" msgid="4923097735600949715">"כיווץ הקבוצה"</string> + <string name="collapse_group" msgid="3487426973871208501">"פחות"</string> <string name="show_more_from_app" msgid="4270626118092846628">"עוד <xliff:g id="COUNT">%1$d</xliff:g> מ-<xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"הצגת עוד <xliff:g id="COUNT">%d</xliff:g> פריטים"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 07475015..39b6f2f8 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"車内用通知マネージャー"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"再生"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"返信"</string> <string name="action_mute_short" msgid="5239851786101022633">"ミュート"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"最近の通知"</string> <string name="notification_older" msgid="8162161020296499690">"以前の通知"</string> <string name="empty_notification_header" msgid="4928379791607839720">"通知はありません"</string> - <string name="collapse_group" msgid="4923097735600949715">"グループを閉じる"</string> + <string name="collapse_group" msgid="3487426973871208501">"一部を表示"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> のその他の通知 <xliff:g id="COUNT">%1$d</xliff:g> 件"</string> <string name="show_count_more" msgid="480555295700318609">"他 <xliff:g id="COUNT">%d</xliff:g> 件を表示"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 6421258a..78c9db03 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"მანქანის შეტყობინების მმართველი"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"დაკვრა"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"პასუხი"</string> <string name="action_mute_short" msgid="5239851786101022633">"დადუმება"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ბოლოდროინდელი"</string> <string name="notification_older" msgid="8162161020296499690">"უფრო ძველი შეტყობინებები"</string> <string name="empty_notification_header" msgid="4928379791607839720">"შეტყობინებები არ არის"</string> - <string name="collapse_group" msgid="4923097735600949715">"ჯგუფის ჩაკეცვა"</string> + <string name="collapse_group" msgid="3487426973871208501">"ნაკლების ჩვენება"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> სხვა <xliff:g id="APP">%2$s</xliff:g>-გან"</string> <string name="show_count_more" msgid="480555295700318609">"კიდევ <xliff:g id="COUNT">%d</xliff:g>-ის ჩვენება"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 6686ef58..a6e31f04 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Көліктегі хабарландыру менеджері"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Ойнату"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Жауап"</string> <string name="action_mute_short" msgid="5239851786101022633">"Дыбысын өшіру"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Соңғылары"</string> <string name="notification_older" msgid="8162161020296499690">"Ескі хабарландырулар"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Хабарландырулар жоқ"</string> - <string name="collapse_group" msgid="4923097735600949715">"Топты жию"</string> + <string name="collapse_group" msgid="3487426973871208501">"Жию"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> қолданбасынан тағы <xliff:g id="COUNT">%1$d</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Тағы <xliff:g id="COUNT">%d</xliff:g> көрсету"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index bf2d8ab0..a1287740 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"មុខងារគ្រប់គ្រងការជូនដំណឹងអំពីរថយន្ត"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ចាក់"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ឆ្លើយតប"</string> <string name="action_mute_short" msgid="5239851786101022633">"បិទសំឡេង"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ថ្មីៗ"</string> <string name="notification_older" msgid="8162161020296499690">"ការជូនដំណឹងចាស់ៗ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"គ្មានការជូនដំណឹង"</string> - <string name="collapse_group" msgid="4923097735600949715">"បង្រួមក្រុម"</string> + <string name="collapse_group" msgid="3487426973871208501">"បង្ហាញតិច"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> ទៀតពី <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"បង្ហាញ <xliff:g id="COUNT">%d</xliff:g> ទៀត"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 0d8455fd..b8b9750e 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"ಕಾರ್ ನೋಟಿಫಿಕೇಶನ್ ನಿರ್ವಾಹಕ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ಪ್ಲೇ ಮಾಡಿ"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ಪ್ರತ್ಯುತ್ತರಿಸಿ"</string> <string name="action_mute_short" msgid="5239851786101022633">"ಮ್ಯೂಟ್"</string> @@ -26,7 +27,7 @@ <string name="action_canned_reply" msgid="4045960823021872834">"\"ಡ್ರೈವ್ ಮಾಡುತ್ತಿದ್ದೇನೆ.\""</string> <string name="canned_reply_message" msgid="7959257272917598063">"ಡ್ರೈವ್ ಮಾಡುತ್ತಿದ್ದೇನೆ."</string> <string name="toast_message_sent_success" msgid="1159956191974273064">"ಸಂದೇಶವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಕಳುಹಿಸಲಾಗಿದೆ."</string> - <string name="notification_service_label" msgid="7512186049723777468">"ಕಾರ್ ಅಧಿಸೂಚನೆ ಕೇಳುವ ಸೇವೆ"</string> + <string name="notification_service_label" msgid="7512186049723777468">"ಕಾರ್ ನೋಟಿಫಿಕೇಶನ್ ಕೇಳುವ ಸೇವೆ"</string> <string name="notifications" msgid="2865534625906329283">"ಅಧಿಸೂಚನೆಯ ಕೇಂದ್ರ"</string> <string name="clear_all" msgid="1845314281571237722">"ತೆರವುಗೊಳಿಸಿ"</string> <string name="ellipsized_string" msgid="6993649229498857557">"…"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ಇತ್ತೀಚಿನವುಗಳು"</string> <string name="notification_older" msgid="8162161020296499690">"ಹಳೆಯ ಅಧಿಸೂಚನೆಗಳು"</string> <string name="empty_notification_header" msgid="4928379791607839720">"ಯಾವುದೇ ಅಧಿಸೂಚನೆಗಳಿಲ್ಲ"</string> - <string name="collapse_group" msgid="4923097735600949715">"ಗುಂಪನ್ನು ಕುಗ್ಗಿಸಿ"</string> + <string name="collapse_group" msgid="3487426973871208501">"ಕಡಿಮೆ ತೋರಿಸಿ"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> ನಿಂದ ಇನ್ನೂ <xliff:g id="COUNT">%1$d</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> ಇನ್ನಷ್ಟು ತೋರಿಸಿ"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> @@ -55,5 +56,5 @@ <string name="hun_suppression_channel_name" msgid="8298850157350352525">"ಗಮನ ರಸ್ತೆ ಕಡೆಗೆ ಇರಲಿ ಫೀಚರ್ನ ನಿರ್ಬಂಧ"</string> <string name="hun_suppression_notification_title_park" msgid="2790860076784227523">"ಇತ್ತೀಚಿನ ಎಪಿಸೋಡ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string> <string name="hun_suppression_notification_title_drive" msgid="4403363470548899844">"ವಾಹನ ಚಾಲನೆಯ ಮೇಲೆ ಗಮನಹರಿಸಿ"</string> - <string name="hun_suppression_notification_description" msgid="5269238832987802104">"ಕೆಲವು ಹೊಸ ಅಧಿಸೂಚನೆಗಳನ್ನು ಅಧಿಸೂಚನೆ ಕೇಂದ್ರದಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ"</string> + <string name="hun_suppression_notification_description" msgid="5269238832987802104">"ಕೆಲವು ಹೊಸ ನೋಟಿಫಿಕೇಶನ್ಗಳನ್ನು ನೋಟಿಫಿಕೇಶನ್ ಕೇಂದ್ರದಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ"</string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 0dca2359..54edf6d0 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"차량 알림 관리자"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"재생"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"답장"</string> <string name="action_mute_short" msgid="5239851786101022633">"음소거"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"최근 알림"</string> <string name="notification_older" msgid="8162161020296499690">"지난 알림"</string> <string name="empty_notification_header" msgid="4928379791607839720">"알림 없음"</string> - <string name="collapse_group" msgid="4923097735600949715">"그룹 접기"</string> + <string name="collapse_group" msgid="3487426973871208501">"간략히"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g>의 알림 <xliff:g id="COUNT">%1$d</xliff:g>개 더보기"</string> <string name="show_count_more" msgid="480555295700318609">"알림 <xliff:g id="COUNT">%d</xliff:g>개 더보기"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 2839557e..c1b80adf 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Унаанын билдирмелерин башкаргыч"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Угуу"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Жооп берүү"</string> <string name="action_mute_short" msgid="5239851786101022633">"Үнүн басуу"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Акыркылар"</string> <string name="notification_older" msgid="8162161020296499690">"Мурунку билдирмелер"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Билдирме жок"</string> - <string name="collapse_group" msgid="4923097735600949715">"Топту жыйыштыруу"</string> + <string name="collapse_group" msgid="3487426973871208501">"Азыраак көрүү"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Дагы <xliff:g id="COUNT">%1$d</xliff:g> билдирме, <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Дагы <xliff:g id="COUNT">%d</xliff:g> көрсөтүү"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 02fbb0fd..0440bbf1 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"ຜູ້ຈັດການການແຈ້ງເຕືອນຂອງລົດ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ຫຼິ້ນ"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ຕອບກັບ"</string> <string name="action_mute_short" msgid="5239851786101022633">"ປິດສຽງ"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ຫຼ້າສຸດ"</string> <string name="notification_older" msgid="8162161020296499690">"ການແຈ້ງເຕືອນທີ່ເກົ່າກວ່າ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"ບໍ່ມີການແຈ້ງເຕືອນ"</string> - <string name="collapse_group" msgid="4923097735600949715">"ຫຍໍ້ກຸ່ມລົງ"</string> + <string name="collapse_group" msgid="3487426973871208501">"ຫຍໍ້ເຂົ້າ"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> ເພີ່ມເຕີມຈາກ <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"ສະແດງອີກ <xliff:g id="COUNT">%d</xliff:g> ລາຍການ"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index e3d16a13..c68e8238 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Automobilio pranešimų tvarkytuvė"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Leisti"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Atsakyti"</string> <string name="action_mute_short" msgid="5239851786101022633">"Nutildyti"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Naujausi"</string> <string name="notification_older" msgid="8162161020296499690">"Senesni pranešimai"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nėra pranešimų"</string> - <string name="collapse_group" msgid="4923097735600949715">"Sutraukti grupę"</string> + <string name="collapse_group" msgid="3487426973871208501">"Rodyti mažiau"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Dar <xliff:g id="COUNT">%1$d</xliff:g> iš „<xliff:g id="APP">%2$s</xliff:g>“"</string> <string name="show_count_more" msgid="480555295700318609">"Rodyti dar <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 2693a36a..dda682cb 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Automašīnas paziņojumu pārvaldnieks"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Atskaņot"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Atbildēšana"</string> <string name="action_mute_short" msgid="5239851786101022633">"Slēpt"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nesenie"</string> <string name="notification_older" msgid="8162161020296499690">"Vecāki paziņojumi"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nav paziņojumu"</string> - <string name="collapse_group" msgid="4923097735600949715">"Sakļaut grupu"</string> + <string name="collapse_group" msgid="3487426973871208501">"Rādīt mazāk"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Vēl <xliff:g id="COUNT">%1$d</xliff:g> no lietotnes <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Rādīt vēl <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 6cf0305f..0d9d4d1d 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Управувач на известување за автомобил"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Пушти"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Одговори"</string> <string name="action_mute_short" msgid="5239851786101022633">"Исклучи звук"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Неодамнешни"</string> <string name="notification_older" msgid="8162161020296499690">"Постари известувања"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Нема известувања"</string> - <string name="collapse_group" msgid="4923097735600949715">"Собери ја групата"</string> + <string name="collapse_group" msgid="3487426973871208501">"Прикажи помалку"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Уште <xliff:g id="COUNT">%1$d</xliff:g> други од <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Прикажи уште <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 44f44f51..86df3718 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"കാർ അറിയിപ്പ് മാനേജർ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"പ്ലേ ചെയ്യുക"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"മറുപടി നൽകുക"</string> <string name="action_mute_short" msgid="5239851786101022633">"മ്യൂട്ട് ചെയ്യുക"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"അടുത്തിടെയുള്ളവ"</string> <string name="notification_older" msgid="8162161020296499690">"പഴയ അറിയിപ്പുകൾ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"അറിയിപ്പുകൾ ഒന്നുമില്ല"</string> - <string name="collapse_group" msgid="4923097735600949715">"ഗ്രൂപ്പ് ചുരുക്കുക"</string> + <string name="collapse_group" msgid="3487426973871208501">"കുറച്ച് കാണിക്കുക"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> ആപ്പിൽ നിന്ന് <xliff:g id="COUNT">%1$d</xliff:g> എണ്ണം കൂടി"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> കൂടുതൽ കാണിക്കുക"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> @@ -49,12 +50,9 @@ <string name="see_more_message" msgid="6343183827924395955">"കൂടുതൽ കാണുക"</string> <string name="restricted_hun_message_content" msgid="631111937988857716">"പുതിയ സന്ദേശം"</string> <string name="manage_text" msgid="4225197445283791757">"മാനേജ് ചെയ്യുക"</string> - <!-- no translation found for category_navigation (4406139232918521087) --> - <skip /> - <!-- no translation found for category_call (2249490790700877973) --> - <skip /> - <!-- no translation found for category_message (451360226248504859) --> - <skip /> + <string name="category_navigation" msgid="4406139232918521087">"നാവിഗേഷൻ"</string> + <string name="category_call" msgid="2249490790700877973">"കോൾ ചെയ്യുക"</string> + <string name="category_message" msgid="451360226248504859">"സന്ദേശം"</string> <string name="hun_suppression_channel_name" msgid="8298850157350352525">"മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കൽ"</string> <string name="hun_suppression_notification_title_park" msgid="2790860076784227523">"ഏറ്റവും പുതിയ വിവരങ്ങൾ അപ്പപ്പോൾ അറിയൂ"</string> <string name="hun_suppression_notification_title_drive" msgid="4403363470548899844">"ഡ്രൈവിംഗിൽ ശ്രദ്ധിക്കുക"</string> diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index b15aada8..8311ceb2 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Машины мэдэгдлийн менежер"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Тоглох"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Хариу бичих"</string> <string name="action_mute_short" msgid="5239851786101022633">"Дууг хаах"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Саяхны"</string> <string name="notification_older" msgid="8162161020296499690">"Арай илүү хуучин мэдэгдэл"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Мэдэгдэл алга"</string> - <string name="collapse_group" msgid="4923097735600949715">"Бүлгийг нэгтгэх"</string> + <string name="collapse_group" msgid="3487426973871208501">"Товч харуулах"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g>-с <xliff:g id="COUNT">%1$d</xliff:g>-р их"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g>-г дэлгэрэнгүй харуулах"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index d79681f4..19c8d86e 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"कारसंबंधित सूचनेचा व्यवस्थापक"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"प्ले करा"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"उतर द्या"</string> <string name="action_mute_short" msgid="5239851786101022633">"म्यूट करा"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"अलीकडील"</string> <string name="notification_older" msgid="8162161020296499690">"जुन्या सूचना"</string> <string name="empty_notification_header" msgid="4928379791607839720">"सूचना नाहीत"</string> - <string name="collapse_group" msgid="4923097735600949715">"गट कोलॅप्स करा"</string> + <string name="collapse_group" msgid="3487426973871208501">"कमी दाखवा"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> मधील आणखी <xliff:g id="COUNT">%1$d</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"आणखी <xliff:g id="COUNT">%d</xliff:g> दाखवा"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 270ecec0..f4a82faf 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Pengurus pemberitahuan kereta"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Main"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Balas"</string> <string name="action_mute_short" msgid="5239851786101022633">"Redam"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Baru-baru ini"</string> <string name="notification_older" msgid="8162161020296499690">"Pemberitahuan lebih lama"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Tiada pemberitahuan"</string> - <string name="collapse_group" msgid="4923097735600949715">"Runtuhkan kumpulan"</string> + <string name="collapse_group" msgid="3487426973871208501">"Tunjukkan kurang"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> lagi daripada <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Tunjukkan <xliff:g id="COUNT">%d</xliff:g> lagi"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 50c69723..98d30cd3 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"ကားတွင်း အကြောင်းကြားချက် မန်နေဂျာ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ဖွင့်ရန်"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ပြန်ကြားရန်"</string> <string name="action_mute_short" msgid="5239851786101022633">"ဖျောက်ထားရန်"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"လတ်တလောများ"</string> <string name="notification_older" msgid="8162161020296499690">"အကြောင်းကြားချက်ဟောင်းများ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"အကြောင်းကြားချက် မရှိ"</string> - <string name="collapse_group" msgid="4923097735600949715">"အုပ်စုကို ခေါက်ရန်"</string> + <string name="collapse_group" msgid="3487426973871208501">"လျှော့ပြပါ"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> မှ နောက်ထပ် <xliff:g id="COUNT">%1$d</xliff:g> ခု"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> ခု ထပ်ပြရန်"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 19b80553..e4959063 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Administrator for bilvarsler"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Spill av"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Svar"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignorer"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nylige"</string> <string name="notification_older" msgid="8162161020296499690">"Eldre varsler"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Ingen varsler"</string> - <string name="collapse_group" msgid="4923097735600949715">"Skjul gruppen"</string> + <string name="collapse_group" msgid="3487426973871208501">"Vis mindre"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> til fra <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Vis <xliff:g id="COUNT">%d</xliff:g> flere"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 98389058..cf72bc1f 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"कार नोटिफिकेसन म्यानेजर"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"प्ले गर्नुहोस्"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"जवाफ दिनुहोस्"</string> <string name="action_mute_short" msgid="5239851786101022633">"म्युट गर्नुहोस्"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"हालैका"</string> <string name="notification_older" msgid="8162161020296499690">"अझ पुराना सूचनाहरू"</string> <string name="empty_notification_header" msgid="4928379791607839720">"कुनै पनि सूचना छैन"</string> - <string name="collapse_group" msgid="4923097735600949715">"समूह कोल्याप्स गर्नुहोस्"</string> + <string name="collapse_group" msgid="3487426973871208501">"कम देखाइयोस्"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> बाट प्राप्त थप <xliff:g id="COUNT">%1$d</xliff:g> सूचनाहरू"</string> <string name="show_count_more" msgid="480555295700318609">"थप <xliff:g id="COUNT">%d</xliff:g> देखाउनुहोस्"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index d11df025..459b1ddb 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Automeldingen beheren"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Afspelen"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Beantwoorden"</string> <string name="action_mute_short" msgid="5239851786101022633">"Dempen"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recent"</string> <string name="notification_older" msgid="8162161020296499690">"Oudere meldingen"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Geen meldingen"</string> - <string name="collapse_group" msgid="4923097735600949715">"Groep samenvouwen"</string> + <string name="collapse_group" msgid="3487426973871208501">"Minder tonen"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Nog <xliff:g id="COUNT">%1$d</xliff:g> van <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> meer tonen"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 2f1fa6d4..47b9900b 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"କାର ବିଜ୍ଞପ୍ତି ମେନେଜର"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ଚଲାନ୍ତୁ"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ପ୍ରତ୍ୟୁତ୍ତର କରନ୍ତୁ"</string> <string name="action_mute_short" msgid="5239851786101022633">"ମ୍ୟୁଟ୍ କରନ୍ତୁ"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ବର୍ତ୍ତମାନର"</string> <string name="notification_older" msgid="8162161020296499690">"ପୁରୁଣା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"କୌଣସି ବିଜ୍ଞପ୍ତି ନାହିଁ"</string> - <string name="collapse_group" msgid="4923097735600949715">"ଗୋଷ୍ଠୀ ସଙ୍କୁଚିତ କର"</string> + <string name="collapse_group" msgid="3487426973871208501">"କମ ଦେଖାନ୍ତୁ"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g>ରୁ <xliff:g id="COUNT">%1$d</xliff:g>ଟି ଅଧିକ"</string> <string name="show_count_more" msgid="480555295700318609">"ଅଧିକ <xliff:g id="COUNT">%d</xliff:g>ଟି ଦେଖାନ୍ତୁ"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 3c859551..d12fb742 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"ਕਾਰ ਸੂਚਨਾ ਪ੍ਰਬੰਧਕ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ਚਲਾਓ"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ਜਵਾਬ ਦਿਓ"</string> <string name="action_mute_short" msgid="5239851786101022633">"ਮਿਊਟ ਕਰੋ"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ਹਾਲੀਆ"</string> <string name="notification_older" msgid="8162161020296499690">"ਪੁਰਾਣੀਆਂ ਸੂਚਨਾਵਾਂ"</string> <string name="empty_notification_header" msgid="4928379791607839720">"ਕੋਈ ਸੂਚਨਾਵਾਂ ਨਹੀਂ"</string> - <string name="collapse_group" msgid="4923097735600949715">"ਗਰੁੱਪ ਨੂੰ ਸਮੇਟੋ"</string> + <string name="collapse_group" msgid="3487426973871208501">"ਘੱਟ ਦਿਖਾਓ"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> ਤੋਂ <xliff:g id="COUNT">%1$d</xliff:g> ਹੋਰ"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> ਹੋਰ ਦਿਖਾਓ"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index f285a00a..f438e2b0 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Menedżer powiadomień w samochodzie"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Odtwórz"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odpowiedz"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignoruj"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Ostatnie"</string> <string name="notification_older" msgid="8162161020296499690">"Starsze powiadomienia"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Brak powiadomień"</string> - <string name="collapse_group" msgid="4923097735600949715">"Zwiń grupę"</string> + <string name="collapse_group" msgid="3487426973871208501">"Pokaż mniej"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> więcej z aplikacji <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Pokaż <xliff:g id="COUNT">%d</xliff:g> więcej"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 13f412e3..b907d330 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Gestor de notificações do carro"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Reproduzir"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Responder"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignorar"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recentes"</string> <string name="notification_older" msgid="8162161020296499690">"Notificações mais antigas"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Sem notificações"</string> - <string name="collapse_group" msgid="4923097735600949715">"Reduzir grupo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostrar menos"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Mais <xliff:g id="COUNT">%1$d</xliff:g> da app <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostrar mais <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index e57cd319..6337364e 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Gerenciador de notificações do carro"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Tocar"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Responder"</string> <string name="action_mute_short" msgid="5239851786101022633">"Desativar som"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recentes"</string> <string name="notification_older" msgid="8162161020296499690">"Notificações antigas"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nenhuma notificação"</string> - <string name="collapse_group" msgid="4923097735600949715">"Fechar grupo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mostrar menos"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Mais <xliff:g id="COUNT">%1$d</xliff:g> de <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Mostrar mais <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 412e7f08..effc6a64 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Manager de notificări pentru mașină"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Redă"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Răspunde"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignoră"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Recente"</string> <string name="notification_older" msgid="8162161020296499690">"Notificări mai vechi"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Nicio notificare"</string> - <string name="collapse_group" msgid="4923097735600949715">"Restrânge grupul"</string> + <string name="collapse_group" msgid="3487426973871208501">"Afișează mai puțin"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Încă <xliff:g id="COUNT">%1$d</xliff:g> de la <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Afișează încă <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 7c8ba5fc..f0955f74 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Менеджер уведомлений в автомобиле"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Прослушать"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Ответить"</string> <string name="action_mute_short" msgid="5239851786101022633">"Отключить звук"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Недавние уведомления"</string> <string name="notification_older" msgid="8162161020296499690">"Старые уведомления"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Уведомлений нет"</string> - <string name="collapse_group" msgid="4923097735600949715">"Свернуть группу"</string> + <string name="collapse_group" msgid="3487426973871208501">"Скрыть"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Ещё <xliff:g id="COUNT">%1$d</xliff:g> от приложения \"<xliff:g id="APP">%2$s</xliff:g>\""</string> <string name="show_count_more" msgid="480555295700318609">"Показать ещё <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 9d5e4e90..28edc304 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"මෝටර් රථ දැනුම්දීම් කළමනාකරු"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"වාදනය"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"පිළිතුරු දෙන්න"</string> <string name="action_mute_short" msgid="5239851786101022633">"නිහඬ"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"මෑත"</string> <string name="notification_older" msgid="8162161020296499690">"පැරණි දැනුම්දීම්"</string> <string name="empty_notification_header" msgid="4928379791607839720">"දැනුම්දීම් නැත"</string> - <string name="collapse_group" msgid="4923097735600949715">"සමූහය හකුළන්න"</string> + <string name="collapse_group" msgid="3487426973871208501">"අඩුවෙන් පෙන්වන්න"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> වෙතින් තව <xliff:g id="COUNT">%1$d</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"තව <xliff:g id="COUNT">%d</xliff:g>ක් පෙන්වන්න"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 9e9ea9a6..6cfaef97 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Správca upozornení v aute"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Prehrať"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odpoveď"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ignorovať"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nedávne"</string> <string name="notification_older" msgid="8162161020296499690">"Staršie upozornenia"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Žiadne upozornenia"</string> - <string name="collapse_group" msgid="4923097735600949715">"Zbaliť skupinu"</string> + <string name="collapse_group" msgid="3487426973871208501">"Zobraziť menej"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Viac z aplikácie <xliff:g id="APP">%2$s</xliff:g> (<xliff:g id="COUNT">%1$d</xliff:g>)"</string> <string name="show_count_more" msgid="480555295700318609">"Zobraziť viac (<xliff:g id="COUNT">%d</xliff:g>)"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 35b0fc8a..6131dbd8 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Upravitelj obvestil v avtomobilu"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Predvajaj"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Odgovori"</string> <string name="action_mute_short" msgid="5239851786101022633">"Prezri"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Nedavna"</string> <string name="notification_older" msgid="8162161020296499690">"Starejša obvestila"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Ni obvestil"</string> - <string name="collapse_group" msgid="4923097735600949715">"Strni skupino"</string> + <string name="collapse_group" msgid="3487426973871208501">"Pokaži manj"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Še <xliff:g id="COUNT">%1$d</xliff:g> iz aplikacije <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Pokaži še <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 7619727e..02f417e3 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Menaxheri i njoftimeve të makinës"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Luaj"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Përgjigju"</string> <string name="action_mute_short" msgid="5239851786101022633">"Pa zë"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Të fundit"</string> <string name="notification_older" msgid="8162161020296499690">"Njoftime më të vjetra"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Asnjë njoftim"</string> - <string name="collapse_group" msgid="4923097735600949715">"Palos grupin"</string> + <string name="collapse_group" msgid="3487426973871208501">"Shfaq më pak"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> më shumë nga <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Shfaq <xliff:g id="COUNT">%d</xliff:g> më shumë"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 91f2a843..1c284d7e 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Менаџер обавештења за аутомобил"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Пусти"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Одговори"</string> <string name="action_mute_short" msgid="5239851786101022633">"Игнориши"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Недавна"</string> <string name="notification_older" msgid="8162161020296499690">"Старија обавештења"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Нема обавештења"</string> - <string name="collapse_group" msgid="4923097735600949715">"Скупи групу"</string> + <string name="collapse_group" msgid="3487426973871208501">"Прикажи мање"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Још <xliff:g id="COUNT">%1$d</xliff:g> из <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Прикажи још <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index decfe3a6..5e8c70a1 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Hantering av bilaviseringar"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Spela upp"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Svara"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ljud av"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Senaste"</string> <string name="notification_older" msgid="8162161020296499690">"Äldre aviseringar"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Inga aviseringar"</string> - <string name="collapse_group" msgid="4923097735600949715">"Komprimera grupp"</string> + <string name="collapse_group" msgid="3487426973871208501">"Visa mindre"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> till från <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Visa <xliff:g id="COUNT">%d</xliff:g> fler"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index b9b7f1f0..8a22c610 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Kidhibiti cha arifa za gari"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Cheza"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Jibu"</string> <string name="action_mute_short" msgid="5239851786101022633">"Zima"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Za hivi majuzi"</string> <string name="notification_older" msgid="8162161020296499690">"Arifa za zamani"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Hakuna arifa"</string> - <string name="collapse_group" msgid="4923097735600949715">"Kunja kundi"</string> + <string name="collapse_group" msgid="3487426973871208501">"Onyesha chache"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> zaidi kutoka <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Onyesha zingine <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 44a1bb2b..ebc0b3d9 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"கார் அறிவிப்பு நிர்வாகி"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ப்ளே பண்ணு"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"பதிலளி"</string> <string name="action_mute_short" msgid="5239851786101022633">"ஒலியடக்கு"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"சமீபத்தியவை"</string> <string name="notification_older" msgid="8162161020296499690">"பழைய அறிவிப்புகள்"</string> <string name="empty_notification_header" msgid="4928379791607839720">"அறிவிப்புகள் ஏதுமில்லை"</string> - <string name="collapse_group" msgid="4923097735600949715">"குழுவைச் சுருக்கு"</string> + <string name="collapse_group" msgid="3487426973871208501">"குறைவாகக் காட்டு"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> ஆப்ஸில் மேலும் <xliff:g id="COUNT">%1$d</xliff:g> அறிவிப்புகள்"</string> <string name="show_count_more" msgid="480555295700318609">"மேலும் <xliff:g id="COUNT">%d</xliff:g> காட்டு"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 6d4b1563..fa5c311f 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"కారు నోటిఫికేషన్ మేనేజర్"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"ప్లే చేయి"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ప్రత్యుత్తరమివ్వండి"</string> <string name="action_mute_short" msgid="5239851786101022633">"మ్యూట్ చేయి"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ఇటీవలివి"</string> <string name="notification_older" msgid="8162161020296499690">"పాత నోటిఫికేషన్లు"</string> <string name="empty_notification_header" msgid="4928379791607839720">"నోటిఫికేషన్లు లేవు"</string> - <string name="collapse_group" msgid="4923097735600949715">"గ్రూప్ను కుదించండి"</string> + <string name="collapse_group" msgid="3487426973871208501">"తక్కువ చూడండి"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> నుండి మరిన్ని <xliff:g id="COUNT">%1$d</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"మరిన్ని <xliff:g id="COUNT">%d</xliff:g> చూపు"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 84f97c8a..2ead7fe3 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"ตัวจัดการการแจ้งเตือนของรถ"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"เล่น"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"ตอบ"</string> <string name="action_mute_short" msgid="5239851786101022633">"ปิดเสียง"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"ล่าสุด"</string> <string name="notification_older" msgid="8162161020296499690">"การแจ้งเตือนที่เก่ากว่า"</string> <string name="empty_notification_header" msgid="4928379791607839720">"ไม่มีการแจ้งเตือน"</string> - <string name="collapse_group" msgid="4923097735600949715">"ยุบกลุ่ม"</string> + <string name="collapse_group" msgid="3487426973871208501">"แสดงน้อยลง"</string> <string name="show_more_from_app" msgid="4270626118092846628">"เพิ่มเติม <xliff:g id="COUNT">%1$d</xliff:g> รายการจาก <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"แสดง <xliff:g id="COUNT">%d</xliff:g> เพิ่มเติม"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index b880a609..8002bcb3 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Manager ng notification sa sasakyan"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"I-play"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Tumugon"</string> <string name="action_mute_short" msgid="5239851786101022633">"I-mute"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Mga Kamakailan"</string> <string name="notification_older" msgid="8162161020296499690">"Mga mas lumang notification"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Walang notification"</string> - <string name="collapse_group" msgid="4923097735600949715">"I-collapse ang grupo"</string> + <string name="collapse_group" msgid="3487426973871208501">"Mas kaunti"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> pa mula sa <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Magpakita ng <xliff:g id="COUNT">%d</xliff:g> pa"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 690aaf91..f1a766c3 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Araba bildirim yöneticisi"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Oynat"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Yanıtla"</string> <string name="action_mute_short" msgid="5239851786101022633">"Kapat"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Son bildirimler"</string> <string name="notification_older" msgid="8162161020296499690">"Eski bildirimler"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Bildirim yok"</string> - <string name="collapse_group" msgid="4923097735600949715">"Grubu daralt"</string> + <string name="collapse_group" msgid="3487426973871208501">"Daha az göster"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> adlı uygulamadan <xliff:g id="COUNT">%1$d</xliff:g> tane daha"</string> <string name="show_count_more" msgid="480555295700318609">"<xliff:g id="COUNT">%d</xliff:g> tane daha göster"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 4fc8e48e..9ddc94a2 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Менеджер сповіщень автомобіля"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Відтворити"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Відповісти"</string> <string name="action_mute_short" msgid="5239851786101022633">"Вимкнути звук"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Нещодавні"</string> <string name="notification_older" msgid="8162161020296499690">"Старіші сповіщення"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Немає сповіщень"</string> - <string name="collapse_group" msgid="4923097735600949715">"Згорнути групу"</string> + <string name="collapse_group" msgid="3487426973871208501">"Менше"</string> <string name="show_more_from_app" msgid="4270626118092846628">"Ще <xliff:g id="COUNT">%1$d</xliff:g> від додатка <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Показати ще <xliff:g id="COUNT">%d</xliff:g>"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 86320878..d7ad1dc1 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"کار کی اطلاع کا مینیجر"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"چلائیں"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"جواب دیں"</string> <string name="action_mute_short" msgid="5239851786101022633">"خاموش کریں"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"حالیہ"</string> <string name="notification_older" msgid="8162161020296499690">"پرانی اطلاعات"</string> <string name="empty_notification_header" msgid="4928379791607839720">"کوئی اطلاعات نہیں ہے"</string> - <string name="collapse_group" msgid="4923097735600949715">"گروپ کو سکیڑیں"</string> + <string name="collapse_group" msgid="3487426973871208501">"کم دکھائیں"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> کی جانب سے <xliff:g id="COUNT">%1$d</xliff:g> مزید"</string> <string name="show_count_more" msgid="480555295700318609">"مزید <xliff:g id="COUNT">%d</xliff:g> دکھائیں"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 715298c7..8df03f70 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Avtomobil bildirishnomasi menejeri"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Ijro"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Javob berish"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ovozsiz"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Oxirgilar"</string> <string name="notification_older" msgid="8162161020296499690">"Eski bildirishnomalar"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Bildirishnomalar yoʻq"</string> - <string name="collapse_group" msgid="4923097735600949715">"Guruhni yigʻish"</string> + <string name="collapse_group" msgid="3487426973871208501">"Kamroq"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="APP">%2$s</xliff:g> ilovasidan yana <xliff:g id="COUNT">%1$d</xliff:g> ta"</string> <string name="show_count_more" msgid="480555295700318609">"Yana <xliff:g id="COUNT">%d</xliff:g> ta xabarni ochish"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 4f7d9d85..90f59126 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Trình quản lý thông báo trên ô tô"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Phát"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Trả lời"</string> <string name="action_mute_short" msgid="5239851786101022633">"Ẩn"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Gần đây"</string> <string name="notification_older" msgid="8162161020296499690">"Thông báo cũ hơn"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Không có thông báo"</string> - <string name="collapse_group" msgid="4923097735600949715">"Thu gọn nhóm"</string> + <string name="collapse_group" msgid="3487426973871208501">"Ẩn bớt"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> thông báo khác từ <xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Hiện thêm <xliff:g id="COUNT">%d</xliff:g> thông báo"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 29143c26..a46bdd37 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"汽车通知管理程序"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"播放"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"回复"</string> <string name="action_mute_short" msgid="5239851786101022633">"忽略"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"近期通知"</string> <string name="notification_older" msgid="8162161020296499690">"时间较早的通知"</string> <string name="empty_notification_header" msgid="4928379791607839720">"没有通知"</string> - <string name="collapse_group" msgid="4923097735600949715">"收起群组"</string> + <string name="collapse_group" msgid="3487426973871208501">"收起"</string> <string name="show_more_from_app" msgid="4270626118092846628">"“<xliff:g id="APP">%2$s</xliff:g>”还有 <xliff:g id="COUNT">%1$d</xliff:g> 条通知"</string> <string name="show_count_more" msgid="480555295700318609">"显示另外 <xliff:g id="COUNT">%d</xliff:g> 个"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 1621fe2a..2157a112 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"汽車通知管理工具"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"播放"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"回覆"</string> <string name="action_mute_short" msgid="5239851786101022633">"忽略"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"最近"</string> <string name="notification_older" msgid="8162161020296499690">"較早的通知"</string> <string name="empty_notification_header" msgid="4928379791607839720">"沒有通知"</string> - <string name="collapse_group" msgid="4923097735600949715">"收合群組"</string> + <string name="collapse_group" msgid="3487426973871208501">"顯示較少"</string> <string name="show_more_from_app" msgid="4270626118092846628">"「<xliff:g id="APP">%2$s</xliff:g>」還有另外 <xliff:g id="COUNT">%1$d</xliff:g> 則通知"</string> <string name="show_count_more" msgid="480555295700318609">"顯示另外 <xliff:g id="COUNT">%d</xliff:g> 項通知"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 6c7b75f9..ba0eaf0e 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"車輛通知管理工具"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"播放"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"回覆"</string> <string name="action_mute_short" msgid="5239851786101022633">"忽略"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"最近的通知"</string> <string name="notification_older" msgid="8162161020296499690">"較早的通知"</string> <string name="empty_notification_header" msgid="4928379791607839720">"沒有通知"</string> - <string name="collapse_group" msgid="4923097735600949715">"收合群組"</string> + <string name="collapse_group" msgid="3487426973871208501">"顯示較少"</string> <string name="show_more_from_app" msgid="4270626118092846628">"「<xliff:g id="APP">%2$s</xliff:g>」還有 <xliff:g id="COUNT">%1$d</xliff:g> 則通知"</string> <string name="show_count_more" msgid="480555295700318609">"顯示更多 (<xliff:g id="COUNT">%d</xliff:g> 則未讀通知)"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index f663a12d..abc0f028 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -17,6 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_label" msgid="5911862216123243843">"Umphathi wesaziso semoto"</string> <string name="assist_action_play_label" msgid="6278705468288338172">"Dlala"</string> <string name="assist_action_reply_label" msgid="6946087036560525072">"Phendula"</string> <string name="action_mute_short" msgid="5239851786101022633">"Thulisa"</string> @@ -35,7 +36,7 @@ <string name="notification_recents" msgid="5855769440781958546">"Okwakamuva"</string> <string name="notification_older" msgid="8162161020296499690">"Izaziso zakudala"</string> <string name="empty_notification_header" msgid="4928379791607839720">"Azikho izaziso"</string> - <string name="collapse_group" msgid="4923097735600949715">"Goqa iqembu"</string> + <string name="collapse_group" msgid="3487426973871208501">"Bonisa okuncane"</string> <string name="show_more_from_app" msgid="4270626118092846628">"<xliff:g id="COUNT">%1$d</xliff:g> okuningi kusuka ku-<xliff:g id="APP">%2$s</xliff:g>"</string> <string name="show_count_more" msgid="480555295700318609">"Bonisa <xliff:g id="COUNT">%d</xliff:g> okuningi"</string> <plurals name="message_unshown_count" formatted="false" msgid="2454776257150137504"> diff --git a/res/values/colors.xml b/res/values/colors.xml index 44d8d568..de15453d 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -15,37 +15,42 @@ limitations under the License. --> <resources> - <color name="ic_launcher_background">#2563E7</color> - <color name="notification_background_color">#ff282a2d</color> + <color name="ic_launcher_background">@color/car_primary</color> + <color name="notification_background_color">@color/car_surface_1</color> <color name="group_notification_background_color">@*android:color/car_grey_900</color> - <color name="action_button_background_color">#1EFFFFFF</color> - <color name="emergency_background_color">#B41B1A</color> - <color name="emergency_primary_text_color">@*android:color/car_body1</color> - <color name="emergency_secondary_text_color">@*android:color/car_body3</color> - <color name="information_background_color">@*android:color/holo_orange_light</color> - <color name="information_primary_text_color">@*android:color/car_body1</color> - <color name="information_secondary_text_color">@*android:color/car_body3</color> - <color name="warning_background_color">@*android:color/holo_orange_dark</color> - <color name="warning_primary_text_color">@*android:color/car_body1</color> - <color name="warning_secondary_text_color">@*android:color/car_body3</color> - <color name="call_accept_button">#208746</color> - <color name="call_decline_button">#D33B30</color> - <color name="unmute_button">#66B5FF</color> - <color name="primary_text_color">@*android:color/car_body1</color> - <color name="secondary_text_color">@*android:color/car_body3</color> - <color name="notification_accent_color">@*android:color/car_body1</color> - <color name="first_action_button_text_color">@color/notification_accent_color</color> - <color name="progress_bar_color">@color/notification_background_color</color> - <color name="progress_bar_bg_color">@*android:color/car_body3</color> + <color name="action_button_background_color">@color/car_secondary_container</color> + <color name="emergency_background_color">@color/car_error_container</color> + <color name="emergency_primary_text_color">@color/car_on_error_container</color> + <color name="emergency_secondary_text_color">@color/car_error</color> + <color name="information_background_color">@color/car_surface_2</color> + <color name="information_primary_text_color">@color/car_on_surface</color> + <color name="information_secondary_text_color">@color/car_on_surface_variant</color> + <color name="warning_background_color">@color/car_yellow_color</color> + <color name="warning_primary_text_color">@color/car_yellow_on_color</color> + <color name="warning_secondary_text_color">@color/car_yellow_color_container</color> + <color name="call_accept_button">@color/car_confirm_green</color> + <color name="call_decline_button">@color/car_decline_red</color> + <color name="call_accept_button_text">@color/car_on_confirm_green</color> + <color name="call_decline_button_text">@color/car_on_decline_red</color> + <color name="unmute_button">@color/car_primary</color> + <color name="primary_text_color">@color/car_on_surface</color> + <color name="secondary_text_color">@color/car_on_surface_variant</color> + <color name="notification_accent_color">@color/car_on_secondary_container</color> + <color name="progress_bar_color">@color/car_primary</color> + <color name="progress_bar_bg_color">@color/car_surface_variant</color> <!-- The color of the clear all button for notifications --> - <color name="clear_all_button_background_color">@*android:color/car_grey_868</color> + <color name="clear_all_button_background_color">@color/car_secondary_container</color> <!-- The color of the ripples on the untinted notifications --> - <color name="notification_ripple_untinted_color">?android:attr/colorControlHighlight</color> + <color name="notification_ripple_untinted_color">@color/car_control_highlight</color> - <color name="notification_list_divider_color">@*android:color/car_list_divider</color> - <color name="icon_tint">@*android:color/car_tint</color> - <color name="dark_icon_tint">@*android:color/car_tint_dark</color> - <color name="count_text">@color/notification_accent_color</color> + <color name="notification_list_divider_color">@color/car_secondary</color> + <color name="icon_tint">@color/car_on_secondary_container</color> + <color name="dark_icon_tint">@color/car_on_primary</color> + <color name="first_action_button_text_color">@color/car_on_primary</color> + <color name="play_icon_tint">@color/first_action_button_text_color</color> + <color name="count_text">@color/car_primary</color> + + <color name="card_background">@color/car_surface_1</color> </resources> diff --git a/res/values/config.xml b/res/values/config.xml index 3d608de5..8bba510f 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -79,6 +79,9 @@ com.android.car.notification.headsup.animationhelper. CarHeadsUpNotificationBottomAnimationHelper. --> <bool name="config_showHeadsUpNotificationOnBottom">false</bool> + <!-- Whether heads-up notifications is dismissible in vertical directions. If set to false + the notification would be dismissible in horizontal directions. --> + <bool name="config_isHeadsUpNotificationDismissibleVertically">false</bool> <!-- Whether to always show Notification's dismiss button even without the need to have rotary focus. --> <bool name="config_alwaysShowNotificationDismissButton">false</bool> <!-- Whether to show action icons inside action buttons. --> @@ -94,7 +97,7 @@ <!-- Whether to show expansion header in group notifications. --> <bool name="config_showExpansionHeader">true</bool> <!-- Whether to use custom colors for message notification count text button. --> - <bool name="config_useCustomColorForMessageNotificationCountTextButton">false</bool> + <bool name="config_useCustomColorForMessageNotificationCountTextButton">true</bool> <!-- Alpha for disabled count text button in message notifications. --> <item name="config_disabledCountTextButtonAlpha" format="float" type="dimen">1</item> <!-- When true, ignore the notification color for warning notification background and use @color/warning_background_color instead. --> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 12227710..40d1ffc6 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -26,6 +26,7 @@ <dimen name="notification_card_footer_height">@*android:dimen/car_card_action_bar_height</dimen> <!-- Card View --> + <dimen name="button_height">64dp</dimen> <dimen name="card_start_margin">@*android:dimen/car_padding_3</dimen> <dimen name="card_end_margin">@*android:dimen/car_keyline_1</dimen> <dimen name="card_min_top_padding">@*android:dimen/car_padding_3</dimen> @@ -45,7 +46,7 @@ <dimen name="body_big_icon_margin">@*android:dimen/car_padding_4</dimen> <dimen name="time_margin">@*android:dimen/car_padding_4</dimen> <dimen name="expanded_package_name_margin">@*android:dimen/car_padding_4</dimen> - <dimen name="notification_card_radius">@*android:dimen/car_radius_2</dimen> + <dimen name="notification_card_radius">32dp</dimen> <dimen name="notification_body_title_margin">@*android:dimen/car_padding_2</dimen> <dimen name="notification_body_content_top_margin">8dp</dimen> <dimen name="message_count_top_margin">12dp</dimen> @@ -57,26 +58,18 @@ <dimen name="notification_text_max_width">950dp</dimen> <!-- Action View --> - <dimen name="action_view_left_margin">@*android:dimen/car_padding_4</dimen> - <dimen name="action_button_radius">28dp</dimen> - <dimen name="action_button_min_width">@*android:dimen/car_button_min_width</dimen> - <dimen name="action_button_height">@*android:dimen/car_button_height</dimen> + <dimen name="action_button_height">@dimen/button_height</dimen> + <dimen name="action_button_radius">32dp</dimen> + <dimen name="action_view_left_margin">16dp</dimen> + <dimen name="action_view_right_margin">16dp</dimen> <dimen name="action_button_padding">@*android:dimen/car_padding_2</dimen> - <dimen name="action_button_spacing_start">@*android:dimen/car_padding_4</dimen> <dimen name="action_button_padding_top">10dp</dimen> - <dimen name="action_button_padding_bottom">10dp</dimen> - <dimen name="action_view_right_margin">@*android:dimen/car_padding_4</dimen> - <dimen name="car_action_button_icon_width">18dp</dimen> - <dimen name="car_action_button_icon_height">18dp</dimen> - <dimen name="car_action_button_icon_margin">12px</dimen> - <dimen name="play_arrow_height">18dp</dimen> - <dimen name="play_arrow_width">14dp</dimen> - <dimen name="reply_icon_height">14dp</dimen> - <dimen name="reply_icon_width">18dp</dimen> - <dimen name="mute_icon_height">20dp</dimen> - <dimen name="mute_icon_width">17dp</dimen> - <dimen name="unmute_icon_height">20dp</dimen> - <dimen name="unmute_icon_width">18dp</dimen> + <dimen name="action_button_padding_bottom">8dp</dimen> + <dimen name="action_button_spacing_start">16dp</dimen> + <dimen name="action_button_min_width">@*android:dimen/car_button_min_width</dimen> + <dimen name="car_action_button_icon_height">28dp</dimen> + <dimen name="car_action_button_icon_margin">8dp</dimen> + <dimen name="car_action_button_icon_width">28dp</dimen> <!-- Icons --> <dimen name="notification_primary_icon_size">@*android:dimen/car_primary_icon_size</dimen> @@ -85,6 +78,12 @@ <dimen name="notification_heads_up_icon_size">@*android:dimen/car_touch_target_size</dimen> <dimen name="media_action_icon_size">@*android:dimen/car_primary_icon_size</dimen> + <!-- Height and width to be used for the headsup container window. + - LayoutParams.MATCH_PARENT = -1 + - LayoutParams.WRAP_CONTENT = -2 --> + <dimen name="headsup_container_height">-2dp</dimen> + <dimen name="headsup_container_width">-1dp</dimen> + <!-- HUN Scrim --> <dimen name="headsup_scrim_height">464dp</dimen> @@ -96,10 +95,14 @@ <!-- Swipe Animation --> <item name="error_factor_multiplier" format="float" type="dimen">1.2</item> - <item name="fling_percentage_of_width_to_dismiss" format="float" type="dimen">0.05</item> - <item name="percentage_of_width_to_dismiss" format="float" type="dimen">0.40</item> - <item name="max_percentage_of_width_with_resistance" format="float" type="dimen">0.4</item> + <item name="fling_percentage_of_max_translation_to_dismiss" format="float" type="dimen">0.05</item> + <item name="percentage_of_max_translation_to_dismiss" format="float" type="dimen">0.40</item> + <item name="max_percentage_of_max_translation_with_resistance" format="float" type="dimen">0.4</item> <dimen name="touch_slop">20dp</dimen> + <!-- The maximum translation that a HUN can have when being swiped away. When set to zero the + view's height/width is used for this value --> + <!-- todo(b/302038229): support translation per direction --> + <dimen name="max_translation_headsup">0dp</dimen> <!-- Dismiss button --> <dimen name="dismiss_button_diameter">@*android:dimen/car_button_height</dimen> @@ -107,9 +110,9 @@ <!-- Clear all button --> <dimen name="clear_all_button_padding">@*android:dimen/car_padding_4</dimen> - <dimen name="clear_all_button_height">@*android:dimen/car_button_height</dimen> - <dimen name="clear_all_button_radius">28dp</dimen> + <dimen name="clear_all_button_height">@dimen/button_height</dimen> <dimen name="clear_all_button_min_width">156dp</dimen> + <dimen name="clear_all_button_radius">44dp</dimen> <!-- Manage button --> <dimen name="manage_button_height">@*android:dimen/car_button_height</dimen> diff --git a/res/values/strings.xml b/res/values/strings.xml index 54fbf883..e7df67c3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -75,7 +75,7 @@ <string name="empty_notification_header">No notifications</string> <!-- The label for the button that collapses a grouped notification [CHAR_LIMIT=20] --> - <string name="collapse_group">Collapse group</string> + <string name="collapse_group">Show less</string> <!-- The label for the button that redirects to application that has more notifications to show. [CHAR_LIMIT=30] --> <string name="show_more_from_app"><xliff:g id="count">%1$d</xliff:g> more from <xliff:g id="app">%2$s</xliff:g></string> diff --git a/res/values/styles.xml b/res/values/styles.xml index eb938468..d7eb377b 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -20,7 +20,7 @@ <item name="android:maxLines">1</item> </style> - <style name="NotificationCenterHeaderText" parent="@android:TextAppearance.DeviceDefault"> + <style name="NotificationCenterHeaderText" parent="TextAppearance.Car.Subhead.Medium"> <item name="android:layout_marginStart">@dimen/notification_card_margin_horizontal</item> <item name="android:paddingBottom">@dimen/notification_header_text_padding_bottom</item> <item name="android:paddingTop">@dimen/notification_header_text_padding_top</item> @@ -35,7 +35,7 @@ <item name="android:textSize">@*android:dimen/car_headline3_size</item> </style> - <style name="NotificationBodyTitleText" parent="@android:TextAppearance.DeviceDefault.Large"> + <style name="NotificationBodyTitleText" parent="TextAppearance.Car.Body.Large"> <item name="android:maxLines">3</item> <item name="android:maxWidth">@dimen/notification_text_max_width</item> <item name="android:ellipsize">end</item> @@ -53,7 +53,7 @@ <item name="android:textSize">@*android:dimen/car_headline3_size</item> </style> - <style name="NotificationBodyContentText" parent="@android:TextAppearance.DeviceDefault"> + <style name="NotificationBodyContentText" parent="TextAppearance.Car.Body.Small"> <item name="android:ellipsize">end</item> <item name="android:maxWidth">@dimen/notification_text_max_width</item> <item name="android:textColor">@color/secondary_text_color</item> @@ -61,11 +61,11 @@ <item name="android:textSize">@*android:dimen/car_headline3_size</item> </style> - <style name="GroupNotificationFooterText" parent="@android:TextAppearance.DeviceDefault"> + <style name="GroupNotificationFooterText" parent="TextAppearance.Car.Subhead.Medium"> <item name="android:gravity">center</item> <item name="android:ellipsize">end</item> <item name="android:maxWidth">@dimen/notification_text_max_width</item> - <item name="android:textColor">@*android:color/white</item> + <item name="android:textColor">?android:attr/colorAccent</item> <item name="android:textStyle">bold</item> <item name="android:textAlignment">gravity</item> <item name="android:textDirection">locale</item> @@ -94,22 +94,27 @@ <item name="android:layout_marginRight">@dimen/action_view_right_margin</item> </style> - <style name="NotificationActionButtonBase" parent="@android:Widget.DeviceDefault.Button.Borderless.Colored"> + <style name="NotificationActionButtonBase" parent="@android:Widget.DeviceDefault.Button"> <item name="android:minWidth">@dimen/action_button_min_width</item> <item name="android:gravity">center</item> <item name="android:paddingStart">@dimen/action_button_padding</item> <item name="android:paddingEnd">@dimen/action_button_padding</item> - <item name="android:background">@drawable/action_button_background</item> <item name="android:orientation">horizontal</item> </style> - <style name="NotificationActionButton1" parent="NotificationActionButtonBase"/> + <style name="NotificationActionButton1" parent="@android:Widget.DeviceDefault.Button.Colored"> + <item name="android:minWidth">@dimen/action_button_min_width</item> + <item name="android:gravity">center</item> + <item name="android:paddingStart">@dimen/action_button_padding</item> + <item name="android:paddingEnd">@dimen/action_button_padding</item> + <item name="android:orientation">horizontal</item> + </style> <style name="NotificationActionButton2" parent="NotificationActionButtonBase"/> <style name="NotificationActionButton3" parent="NotificationActionButtonBase"/> - <style name="NotificationActionButtonText" parent="@android:TextAppearance.DeviceDefault"> + <style name="NotificationActionButtonText" parent="TextAppearance.Car.Button"> <item name="android:textAllCaps">false</item> <item name="android:textColor">@color/notification_accent_color</item> <item name="android:maxLines">1</item> @@ -144,5 +149,19 @@ <style name="ManageButton" parent="ClearAllButton"> </style> + <style name="NotificationCard"> + <item name="android:layout_width">match_parent</item> + <item name="android:layout_height">wrap_content</item> + <item name="android:layout_gravity">center_horizontal</item> + <item name="android:layout_marginEnd">@dimen/notification_card_margin_horizontal</item> + <item name="android:layout_marginStart">@dimen/notification_card_margin_horizontal</item> + </style> + + <style name="HeadsUpNotificationCard" parent="NotificationCard"> + <item name="android:layout_marginEnd">@dimen/notification_headsup_card_margin_horizontal + </item> + <item name="android:layout_marginStart">@dimen/notification_headsup_card_margin_horizontal + </item> + </style> </resources> diff --git a/res/values/themes.xml b/res/values/themes.xml index 9b707338..2334e6e5 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -16,5 +16,6 @@ --> <resources> <style name="Theme.DeviceDefault.NoActionBar.Notification" parent="@android:Theme.DeviceDefault.NoActionBar"> + <item name="android:colorPrimary">@color/card_background</item> </style> </resources>
\ No newline at end of file diff --git a/src/com/android/car/notification/CarHeadsUpNotificationManager.java b/src/com/android/car/notification/CarHeadsUpNotificationManager.java index 32943695..2d6a4935 100644 --- a/src/com/android/car/notification/CarHeadsUpNotificationManager.java +++ b/src/com/android/car/notification/CarHeadsUpNotificationManager.java @@ -25,8 +25,6 @@ import static com.android.car.assist.client.CarAssistUtils.isCarCompatibleMessag import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; -import android.annotation.NonNull; -import android.annotation.Nullable; import android.app.ActivityTaskManager; import android.app.KeyguardManager; import android.app.Notification; @@ -43,6 +41,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewTreeObserver; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.annotation.UiThread; import androidx.annotation.VisibleForTesting; @@ -56,6 +56,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledThreadPoolExecutor; /** @@ -108,12 +109,13 @@ public class CarHeadsUpNotificationManager private final KeyguardManager mKeyguardManager; private final PreprocessingManager mPreprocessingManager; private final LayoutInflater mInflater; - private final CarHeadsUpNotificationContainer mHunContainer; + @VisibleForTesting + final CarHeadsUpNotificationContainer mHunContainer; private final CarHeadsUpNotificationQueue.CarHeadsUpNotificationQueueCallback mCarHeadsUpNotificationQueueCallback; // key for the map is the statusbarnotification key - private final Map<String, HeadsUpEntry> mActiveHeadsUpNotifications = new HashMap<>(); + private final Map<String, HeadsUpEntry> mActiveHeadsUpNotifications = new ConcurrentHashMap<>(); private final List<OnHeadsUpNotificationStateChange> mNotificationStateChangeListeners = new ArrayList<>(); private final Map<HeadsUpEntry, @@ -282,6 +284,18 @@ public class CarHeadsUpNotificationManager mCarHeadsUpNotificationQueue.releaseQueue(); } + /** + * Clears all local cached variables and gracefully removes any heads up notification views if + * present. + */ + public void clearCache() { + mCarHeadsUpNotificationQueue.clearCache(); + for (AlertEntry alertEntry : mActiveHeadsUpNotifications.values()) { + resetHeadsUpEntry(alertEntry); + removeHeadsUpEntry(alertEntry, getHeadsUpView(alertEntry)); + } + } + private void scheduleRemoveHeadsUp(AlertEntry alertEntry) { HeadsUpEntry currentActiveHeadsUpNotification = getActiveHeadsUpEntry(alertEntry); @@ -477,7 +491,11 @@ public class CarHeadsUpNotificationManager // Add swipe gesture View cardView = notificationView.findViewById(R.id.card_view); cardView.setOnTouchListener(new HeadsUpNotificationOnTouchListener(cardView, - isHeadsUpDismissible(alertEntry), () -> resetView(alertEntry))); + isHeadsUpDismissible(alertEntry), () -> { + resetHeadsUpEntry(alertEntry); + removeHeadsUpEntry(alertEntry, getHeadsUpView(alertEntry)); + handleHeadsUpNotificationStateChanged(alertEntry, HeadsUpState.DISMISSED); + })); // Add dismiss button listener View dismissButton = notificationView.findViewById( @@ -574,57 +592,57 @@ public class CarHeadsUpNotificationManager */ private void dismissHun(AlertEntry alertEntry) { Log.d(TAG, "clearViews for Heads Up Notification: "); - if (!isActiveHun(alertEntry)) { - // View can also be removed when swiped away. - return; - } - // Get the current notification to perform animations and remove it immediately from the - // active notification maps and cancel all other call backs if any. - HeadsUpEntry currentHeadsUpNotification = getActiveHeadsUpEntry(alertEntry); - // view could already be in the process of being dismissed - if (currentHeadsUpNotification.mIsDismissing) { - return; - } - currentHeadsUpNotification.mIsDismissing = true; - currentHeadsUpNotification.getHandler().removeCallbacksAndMessages(null); - resetViewTreeListenersEntry(currentHeadsUpNotification); - View view = currentHeadsUpNotification.getNotificationView(); + resetHeadsUpEntry(alertEntry); + boolean isTaggedToBeRemoved = isActiveHun(alertEntry) + && getActiveHeadsUpEntry(alertEntry).mShouldRemove; + View view = getHeadsUpView(alertEntry); AnimatorSet animatorSet = mAnimationHelper.getAnimateOutAnimator(mContext, view); animatorSet.setTarget(view); animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - mHunContainer.removeNotification(view); - // Remove HUN after the animation ends to prevent accidental touch on the card // triggering another remove call. - mActiveHeadsUpNotifications.remove(alertEntry.getKey()); + removeHeadsUpEntry(alertEntry, view); handleHeadsUpNotificationStateChanged(alertEntry, - currentHeadsUpNotification.mShouldRemove ? HeadsUpState.REMOVED_BY_SENDER + isTaggedToBeRemoved ? HeadsUpState.REMOVED_BY_SENDER : HeadsUpState.DISMISSED); } }); animatorSet.start(); } - /** - * Removes the view for the active heads up notification and also removes the HUN from the map - * of active Notifications. - */ - private void resetView(AlertEntry alertEntry) { + private void resetHeadsUpEntry(@NonNull AlertEntry alertEntry) { if (!isActiveHun(alertEntry)) { return; } HeadsUpEntry currentHeadsUpNotification = getActiveHeadsUpEntry(alertEntry); + // view could already be in the process of being dismissed + if (currentHeadsUpNotification.mIsDismissing) { + return; + } + currentHeadsUpNotification.mIsDismissing = true; currentHeadsUpNotification.getHandler().removeCallbacksAndMessages(null); - mHunContainer.removeNotification(currentHeadsUpNotification.getNotificationView()); - mActiveHeadsUpNotifications.remove(alertEntry.getKey()); - handleHeadsUpNotificationStateChanged(alertEntry, HeadsUpState.DISMISSED); resetViewTreeListenersEntry(currentHeadsUpNotification); } + @Nullable + private View getHeadsUpView(@NonNull AlertEntry alertEntry) { + if (!isActiveHun(alertEntry)) { + return null; + } + return getActiveHeadsUpEntry(alertEntry).getNotificationView(); + } + + private void removeHeadsUpEntry(@NonNull AlertEntry alertEntry, @Nullable View view) { + if (view != null) { + mHunContainer.removeNotification(view); + } + mActiveHeadsUpNotifications.remove(alertEntry.getKey()); + } + /** * Helper method that determines whether a notification should show as a heads-up. * @@ -774,4 +792,9 @@ public class CarHeadsUpNotificationManager void setCarHeadsUpNotificationQueue(CarHeadsUpNotificationQueue carHeadsUpNotificationQueue) { mCarHeadsUpNotificationQueue = carHeadsUpNotificationQueue; } + + @VisibleForTesting + void addActiveHeadsUpNotification(HeadsUpEntry headsUpEntry) { + mActiveHeadsUpNotifications.put(headsUpEntry.getKey(), headsUpEntry); + } } diff --git a/src/com/android/car/notification/CarHeadsUpNotificationQueue.java b/src/com/android/car/notification/CarHeadsUpNotificationQueue.java index 9fe4d83d..dfede430 100644 --- a/src/com/android/car/notification/CarHeadsUpNotificationQueue.java +++ b/src/com/android/car/notification/CarHeadsUpNotificationQueue.java @@ -331,6 +331,18 @@ public class CarHeadsUpNotificationQueue implements } /** + * Clears all local cached variables and cancels scheduled executor tasks. + */ + public void clearCache() { + mPriorityQueue.clear(); + mKeyToAlertEntryMap.clear(); + mThrottledDisplays.clear(); + if (mScheduledFuture != null) { + mScheduledFuture.cancel(/* mayInterruptIfRunning= */ true); + } + } + + /** * Callback to communicate status of HUN. */ public interface CarHeadsUpNotificationQueueCallback { diff --git a/src/com/android/car/notification/CarNotificationItemTouchListener.java b/src/com/android/car/notification/CarNotificationItemTouchListener.java index 908baaa2..8bfa3403 100644 --- a/src/com/android/car/notification/CarNotificationItemTouchListener.java +++ b/src/com/android/car/notification/CarNotificationItemTouchListener.java @@ -50,6 +50,11 @@ import java.util.concurrent.TimeUnit; * and resistant swiping for undismissible notifications. */ public class CarNotificationItemTouchListener extends RecyclerView.SimpleOnItemTouchListener { + /** + * The unit of velocity in milliseconds. A value of 1 means "pixels per millisecond", + * 1000 means "pixels per 1000 milliseconds (1 second)". + */ + private static final int PIXELS_PER_SECOND = (int) TimeUnit.SECONDS.toMillis(1); private static final String TAG = "CarNotificationItemTouchListener"; private static final boolean DEBUG = Build.IS_ENG || Build.IS_USERDEBUG; @@ -145,9 +150,10 @@ public class CarNotificationItemTouchListener extends RecyclerView.SimpleOnItemT mErrorFactorMultiplier = res.getFloat(R.dimen.error_factor_multiplier); mFlingPercentageOfWidthToDismiss = - res.getFloat(R.dimen.fling_percentage_of_width_to_dismiss); + res.getFloat(R.dimen.fling_percentage_of_max_translation_to_dismiss); - mPercentageOfWidthToDismiss = res.getFloat(R.dimen.percentage_of_width_to_dismiss); + mPercentageOfWidthToDismiss = + res.getFloat(R.dimen.percentage_of_max_translation_to_dismiss); mMinVelocityForSwipeDirection = res.getInteger(R.integer.min_velocity_for_swipe_direction_detection); @@ -291,8 +297,7 @@ public class CarNotificationItemTouchListener extends RecyclerView.SimpleOnItemT return false; } - View innerNotificationList = mViewHolder.itemView - .requireViewById(R.id.notification_list); + View innerNotificationList = mViewHolder.itemView.requireViewById(R.id.notification_list); int[] screenXY = {0, 0}; innerNotificationList.getLocationOnScreen(screenXY); int top = screenXY[1]; @@ -337,9 +342,7 @@ public class CarNotificationItemTouchListener extends RecyclerView.SimpleOnItemT break; } - mVelocityTracker.computeCurrentVelocity( - (int) TimeUnit.SECONDS.toMillis(1) /* pixels/second */, - mMaximumFlingVelocity); + mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND, mMaximumFlingVelocity); float velocityX = getLastComputedXVelocity(); float translationX = mViewHolder.getSwipeTranslationX(); diff --git a/src/com/android/car/notification/CarNotificationListener.java b/src/com/android/car/notification/CarNotificationListener.java index 0cc28edb..3d1b3dc9 100644 --- a/src/com/android/car/notification/CarNotificationListener.java +++ b/src/com/android/car/notification/CarNotificationListener.java @@ -15,7 +15,6 @@ */ package com.android.car.notification; -import android.annotation.Nullable; import android.app.NotificationManager; import android.content.ComponentName; import android.content.Context; @@ -31,6 +30,7 @@ import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.util.Log; +import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.car.notification.headsup.CarHeadsUpNotificationAppContainer; @@ -61,6 +61,7 @@ public class CarNotificationListener extends NotificationListenerService impleme private CarHeadsUpNotificationManager mHeadsUpManager; private NotificationDataManager mNotificationDataManager; private boolean mIsNotificationPanelVisible; + private boolean mIsListenerConnected; /** * Map that contains all the active notifications that are not currently HUN. These @@ -250,10 +251,12 @@ public class CarNotificationListener extends NotificationListenerService impleme mActiveNotifications = Stream.of(getActiveNotifications()).collect( Collectors.toConcurrentMap(StatusBarNotification::getKey, AlertEntry::new)); mRankingMap = super.getCurrentRanking(); + mIsListenerConnected = true; } @Override public void onListenerDisconnected() { + mIsListenerConnected = false; } public void setHandler(Handler handler) { @@ -261,6 +264,17 @@ public class CarNotificationListener extends NotificationListenerService impleme } /** + * Clears all local cached variables. + * Note: This is a blocking call so should not execute any long-running or time-consuming tasks + * like storing cache. + */ + public void clearCache() { + mHeadsUpManager.clearCache(); + mNotificationDataManager.clearAll(); + mActiveNotifications.clear(); + } + + /** * Called when Notification Panel's visibility changes. */ public void onVisibilityChanged(boolean isVisible) { @@ -300,7 +314,6 @@ public class CarNotificationListener extends NotificationListenerService impleme || sbn.getUser().getIdentifier() == UserHandle.USER_ALL); } - @Override public void onStateChange(AlertEntry alertEntry, CarHeadsUpNotificationManager.HeadsUpState headsUpState) { @@ -342,4 +355,9 @@ public class CarNotificationListener extends NotificationListenerService impleme mRankingMap.getRanking(alertEntry.getKey(), ranking); return ranking.getImportance() > NotificationManager.IMPORTANCE_LOW; } + + @VisibleForTesting + boolean getIsListenerConnected() { + return mIsListenerConnected; + } } diff --git a/src/com/android/car/notification/DismissAnimationHelper.java b/src/com/android/car/notification/DismissAnimationHelper.java index 2275f6da..6eb3ff6a 100644 --- a/src/com/android/car/notification/DismissAnimationHelper.java +++ b/src/com/android/car/notification/DismissAnimationHelper.java @@ -58,11 +58,11 @@ class DismissAnimationHelper { } /** - * The percentage of the view holder's width a non-dismissible view holder is allow to translate + * The percentage of the max translation a non-dismissible view holder is allow to translate * during a swipe gesture. As gesture's delta x distance grows the view holder should translate * asymptotically to this amount. */ - private final float mMaxPercentageOfWidthWithResistance; + private final float mMaxPercentageOfMaxTranslationWithResistance; /** * The callback indicating the supplied view has been dismissed. @@ -78,8 +78,8 @@ class DismissAnimationHelper { DismissAnimationHelper(Context context, DismissCallback callbacks) { mCallBacks = callbacks; - mMaxPercentageOfWidthWithResistance = - context.getResources().getFloat(R.dimen.max_percentage_of_width_with_resistance); + mMaxPercentageOfMaxTranslationWithResistance = context.getResources().getFloat( + R.dimen.max_percentage_of_max_translation_with_resistance); } /** Animate the dismissal of the given item. The velocityX is assumed to be 0. */ @@ -150,7 +150,7 @@ class DismissAnimationHelper { int swipeDirection = moveDeltaX > 0 ? Direction.RIGHT : Direction.LEFT; int width = viewHolder.itemView.getWidth(); - float maxSwipeDistanceWithResistance = mMaxPercentageOfWidthWithResistance * width; + float maxSwipeDistanceWithResistance = mMaxPercentageOfMaxTranslationWithResistance * width; if (Math.abs(moveDeltaX) >= width) { // If deltaX is too large, constrain to // maxScrollDistanceWithResistance. diff --git a/src/com/android/car/notification/HeadsUpEntry.java b/src/com/android/car/notification/HeadsUpEntry.java index 42eb4144..4a24152b 100644 --- a/src/com/android/car/notification/HeadsUpEntry.java +++ b/src/com/android/car/notification/HeadsUpEntry.java @@ -33,9 +33,16 @@ public class HeadsUpEntry extends AlertEntry { private View mNotificationView; private CarNotificationBaseViewHolder mCarNotificationBaseViewHolder; + // Signifies that this notification was NOT flagged with Notification.FLAG_ONLY_ALERT_ONCE boolean mIsAlertAgain; + + // Signifies that this notification is to be shown as Heads Up Notification for the first time boolean mIsNewHeadsUp; + + // Signifies that this notification is in process of being dismissed boolean mIsDismissing; + + // Signifies that the sender marked this notification to be removed boolean mShouldRemove; HeadsUpEntry(StatusBarNotification statusBarNotification) { diff --git a/src/com/android/car/notification/HeadsUpNotificationOnTouchListener.java b/src/com/android/car/notification/HeadsUpNotificationOnTouchListener.java index a9701093..c31d973e 100644 --- a/src/com/android/car/notification/HeadsUpNotificationOnTouchListener.java +++ b/src/com/android/car/notification/HeadsUpNotificationOnTouchListener.java @@ -18,44 +18,76 @@ package com.android.car.notification; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.content.res.Resources; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; +import android.view.ViewConfiguration; +import android.view.ViewPropertyAnimator; +import android.view.ViewTreeObserver; + +import com.android.internal.annotations.VisibleForTesting; + +import java.util.concurrent.TimeUnit; /** * OnTouchListener that enables swipe-to-dismiss gesture on heads-up notifications. */ class HeadsUpNotificationOnTouchListener implements View.OnTouchListener { + // todo(b/301474982): converge common logic in this and CarNotificationItemTouchListener class. + private static final int INITIAL_TRANSLATION_X = 0; + private static final int INITIAL_TRANSLATION_Y = 0; + private static final float MAXIMUM_ALPHA = 1f; + private static final float MINIMUM_ALPHA = 0f; /** - * Minimum velocity to initiate a fling, as measured in pixels per second. + * Factor by which view's alpha decreases based on the translation in the direction of dismiss. + * Example: If set to 1f, the view will be invisible when it has translated the maximum possible + * translation, similarly for 2f, view will be invisible halfway. */ - private static final int MINIMUM_FLING_VELOCITY = 2000; + private static final float ALPHA_FADE_FACTOR_MULTIPLIER = 2f; /** + * The unit of velocity in milliseconds. A value of 1 means "pixels per millisecond", + * 1000 means "pixels per 1000 milliseconds (1 second)". + */ + private static final int PIXELS_PER_SECOND = (int) TimeUnit.SECONDS.toMillis(1); + private final View mView; + private final DismissCallbacks mCallbacks; + private final Axis mDismissAxis; + /** * Distance a touch can wander before we think the user is scrolling in pixels. */ - private static final int TOUCH_SLOP = 20; - + private final int mTouchSlop; + private final boolean mDismissOnSwipe; /** * The proportion which view has to be swiped before it dismisses. */ - private static final float THRESHOLD = 0.3f; - + private final float mPercentageOfMaxTransaltionToDismiss; /** - * The unit of velocity in milliseconds. A value of 1 means "pixels per millisecond", - * 1000 means "pixels per 1000 milliseconds (1 second)". + * The minimum velocity in pixel per second the swipe gesture to initiate a dismiss action. */ - private static final int VELOCITY_UNITS = 1000; - - private final View mView; - private final DismissCallbacks mCallbacks; - + private final int mMinimumFlingVelocity; + /** + * The cap on velocity in pixel per second a swipe gesture is calculated to have. + */ + private final int mMaximumFlingVelocity; + /** + * The transaltion that a view can have. To set change value of + * {@code R.dimen.max_translation_headsup} to a non zero value. If set to zero, the view's + * dimensions(height/width) will be used instead. + */ + private float mMaxTranslation; + /** + * Distance by which a view should be translated by to be considered dismissed. Can be + * configured by setting {@code R.dimen.percentage_of_max_translation_to_dismiss} + */ + private float mDismissDelta; private VelocityTracker mVelocityTracker; private float mDownX; + private float mDownY; private boolean mSwiping; private int mSwipingSlop; - private float mTranslationX; - private boolean mDismissOnSwipe = true; + private float mTranslation; /** * The callback indicating the supplied view has been dismissed. @@ -64,24 +96,68 @@ class HeadsUpNotificationOnTouchListener implements View.OnTouchListener { void onDismiss(); } + private enum Axis { + HORIZONTAL, VERTICAL; + + public Axis getOppositeAxis() { + switch (this) { + case VERTICAL: + return HORIZONTAL; + default: + return VERTICAL; + } + } + } + HeadsUpNotificationOnTouchListener(View view, boolean dismissOnSwipe, DismissCallbacks callbacks) { mView = view; mCallbacks = callbacks; mDismissOnSwipe = dismissOnSwipe; + Resources res = view.getContext().getResources(); + mDismissAxis = res.getBoolean(R.bool.config_isHeadsUpNotificationDismissibleVertically) + ? Axis.VERTICAL : Axis.HORIZONTAL; + mTouchSlop = res.getDimensionPixelSize(R.dimen.touch_slop); + mPercentageOfMaxTransaltionToDismiss = + res.getFloat(R.dimen.percentage_of_max_translation_to_dismiss); + mMaxTranslation = res.getDimension(R.dimen.max_translation_headsup); + if (mMaxTranslation != 0) { + mDismissDelta = mMaxTranslation * mPercentageOfMaxTransaltionToDismiss; + } else { + mView.getViewTreeObserver().addOnGlobalLayoutListener( + new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + mView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + if (mDismissAxis == Axis.VERTICAL) { + mMaxTranslation = view.getHeight(); + } else { + mMaxTranslation = view.getWidth(); + } + mDismissDelta = mMaxTranslation * mPercentageOfMaxTransaltionToDismiss; + } + }); + } + ViewConfiguration viewConfiguration = ViewConfiguration.get(view.getContext()); + mMaximumFlingVelocity = viewConfiguration.getScaledMaximumFlingVelocity(); + mMinimumFlingVelocity = viewConfiguration.getScaledMinimumFlingVelocity(); } @Override public boolean onTouch(View view, MotionEvent motionEvent) { - motionEvent.offsetLocation(mTranslationX, /* deltaY= */ 0); - int viewWidth = mView.getWidth(); + if (mDismissAxis == Axis.VERTICAL) { + motionEvent.offsetLocation(INITIAL_TRANSLATION_X, /* deltaY= */ mTranslation); + } else { + motionEvent.offsetLocation(/* deltaX= */ mTranslation, INITIAL_TRANSLATION_Y); + } switch (motionEvent.getActionMasked()) { case MotionEvent.ACTION_DOWN: { mDownX = motionEvent.getRawX(); - mVelocityTracker = VelocityTracker.obtain(); + mDownY = motionEvent.getRawY(); + mVelocityTracker = obtainVelocityTracker(); mVelocityTracker.addMovement(motionEvent); - return false; + break; } case MotionEvent.ACTION_UP: { @@ -89,38 +165,29 @@ class HeadsUpNotificationOnTouchListener implements View.OnTouchListener { return false; } - float deltaX = motionEvent.getRawX() - mDownX; mVelocityTracker.addMovement(motionEvent); - mVelocityTracker.computeCurrentVelocity(VELOCITY_UNITS); - float velocityX = mVelocityTracker.getXVelocity(); - float absVelocityX = Math.abs(velocityX); - float absVelocityY = Math.abs(mVelocityTracker.getYVelocity()); - boolean dismiss = false; - boolean dismissRight = false; - if (Math.abs(deltaX) > viewWidth * THRESHOLD) { + mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND, mMaximumFlingVelocity); + float deltaInDismissAxis = + getDeltaInAxis(mDownX, mDownY, motionEvent, mDismissAxis); + boolean shouldBeDismissed = false; + boolean dismissInPositiveDirection = false; + if (Math.abs(deltaInDismissAxis) > mDismissDelta) { // dismiss when the movement is more than the defined threshold. - dismiss = true; - dismissRight = deltaX > 0; - } else if (MINIMUM_FLING_VELOCITY <= absVelocityX - && absVelocityY < absVelocityX - && mSwiping) { + shouldBeDismissed = true; + dismissInPositiveDirection = deltaInDismissAxis > 0; + } else if (mSwiping && isFlingEnoughForDismiss(mVelocityTracker, mDismissAxis) + && isFlingInSameDirectionAsDelta( + deltaInDismissAxis, mVelocityTracker, mDismissAxis)) { // dismiss when the velocity is more than the defined threshold. // dismiss only if flinging in the same direction as dragging. - dismiss = (velocityX < 0) == (deltaX < 0); - dismissRight = mVelocityTracker.getXVelocity() > 0; + shouldBeDismissed = true; + dismissInPositiveDirection = + getVelocityInAxis(mVelocityTracker, mDismissAxis) > 0; } - if (dismiss && mDismissOnSwipe) { + + if (shouldBeDismissed && mDismissOnSwipe) { mCallbacks.onDismiss(); - mView.animate() - .translationX(dismissRight ? viewWidth : -viewWidth) - .alpha(0) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mView.setAlpha(1f); - mView.setTranslationX(0); - } - }); + animateDismissInAxis(mView, mDismissAxis, dismissInPositiveDirection); } else if (mSwiping) { animateToCenter(); } @@ -143,44 +210,33 @@ class HeadsUpNotificationOnTouchListener implements View.OnTouchListener { } mVelocityTracker.addMovement(motionEvent); - float deltaX = motionEvent.getRawX() - mDownX; - if (Math.abs(deltaX) > TOUCH_SLOP) { + float deltaInDismissAxis = + getDeltaInAxis(mDownX, mDownY, motionEvent, mDismissAxis); + if (Math.abs(deltaInDismissAxis) > mTouchSlop) { mSwiping = true; - mSwipingSlop = (deltaX > 0 ? TOUCH_SLOP : -TOUCH_SLOP); - mView.getParent().requestDisallowInterceptTouchEvent(true); - - // prevent onClickListener being triggered when moving. - MotionEvent cancelEvent = MotionEvent.obtain(motionEvent); - cancelEvent.setAction(MotionEvent.ACTION_CANCEL | - (motionEvent.getActionIndex() << - MotionEvent.ACTION_POINTER_INDEX_SHIFT)); - mView.onTouchEvent(cancelEvent); - cancelEvent.recycle(); + mSwipingSlop = (deltaInDismissAxis > 0 ? mTouchSlop : -mTouchSlop); + disallowAndCancelTouchEvents(mView, motionEvent); } if (mSwiping) { - mTranslationX = deltaX; - mView.setTranslationX(deltaX - mSwipingSlop); - if (!mDismissOnSwipe) { - return true; + mTranslation = deltaInDismissAxis; + moveView(mView, + /* translation= */ deltaInDismissAxis - mSwipingSlop, mDismissAxis); + if (mDismissOnSwipe) { + mView.setAlpha(getAlphaForDismissingView(mTranslation, mMaxTranslation)); } - mView.setAlpha(Math.max(0f, Math.min(1f, - 1f - 2f * Math.abs(deltaX) / viewWidth))); return true; } } - - default: { - return false; - } } return false; } private void animateToCenter() { mView.animate() - .translationX(0) - .alpha(1) + .translationX(INITIAL_TRANSLATION_X) + .translationY(INITIAL_TRANSLATION_Y) + .alpha(MAXIMUM_ALPHA) .setListener(null); } @@ -189,8 +245,128 @@ class HeadsUpNotificationOnTouchListener implements View.OnTouchListener { mVelocityTracker.recycle(); } mVelocityTracker = null; - mTranslationX = 0; + mTranslation = 0; mDownX = 0; + mDownY = 0; mSwiping = false; } + + private void resetView(View view) { + view.setTranslationX(INITIAL_TRANSLATION_X); + view.setTranslationY(INITIAL_TRANSLATION_Y); + view.setAlpha(MAXIMUM_ALPHA); + } + + private float getDeltaInAxis( + float downX, float downY, MotionEvent motionEvent, Axis dismissAxis) { + switch (dismissAxis) { + case VERTICAL: + return motionEvent.getRawY() - downY; + default: + return motionEvent.getRawX() - downX; + } + } + + private void disallowAndCancelTouchEvents(View view, MotionEvent motionEvent) { + view.getParent().requestDisallowInterceptTouchEvent(true); + + // prevent onClickListener being triggered when moving. + MotionEvent cancelEvent = obtainMotionEvent(motionEvent); + cancelEvent.setAction(MotionEvent.ACTION_CANCEL + | (motionEvent.getActionIndex() + << MotionEvent.ACTION_POINTER_INDEX_SHIFT)); + view.onTouchEvent(cancelEvent); + cancelEvent.recycle(); + } + + private void moveView(View view, float translation, Axis dismissAxis) { + if (dismissAxis == Axis.VERTICAL) { + view.setTranslationY(translation); + } else { + view.setTranslationX(translation); + } + } + + private float getAlphaForDismissingView(float translation, float maxTranslation) { + float fractionMoved = Math.abs(translation) / Math.abs(maxTranslation); + // min is required to avoid value greater than MAXIMUM_ALPHA + float alphaBasedOnTranslation = Math.min(MAXIMUM_ALPHA, + MAXIMUM_ALPHA - (ALPHA_FADE_FACTOR_MULTIPLIER * fractionMoved)); + // max is required to avoid alpha values less than min + return Math.max(MINIMUM_ALPHA, alphaBasedOnTranslation); + } + + private boolean isFlingEnoughForDismiss(VelocityTracker velocityTracker, Axis axis) { + float velocityInDismissingDirection = getVelocityInAxis(velocityTracker, axis); + float velocityInOppositeDirection = + getVelocityInAxis(velocityTracker, axis.getOppositeAxis()); + boolean isMoreFlingInDismissAxis = + Math.abs(velocityInDismissingDirection) > Math.abs(velocityInOppositeDirection); + return mMinimumFlingVelocity <= Math.abs(velocityInDismissingDirection) + && isMoreFlingInDismissAxis; + } + + private float getVelocityInAxis(VelocityTracker velocityTracker, Axis axis) { + switch (axis) { + case VERTICAL: + return velocityTracker.getYVelocity(); + default: + return velocityTracker.getXVelocity(); + } + } + + private boolean isFlingInSameDirectionAsDelta(float delta, VelocityTracker velocityTracker, + Axis axis) { + float velocityInDismissingDirection = getVelocityInAxis(velocityTracker, axis); + boolean isVelocityInPositiveDirection = velocityInDismissingDirection > 0; + boolean isDeltaInPositiveDirection = delta > 0; + return isVelocityInPositiveDirection == isDeltaInPositiveDirection; + } + + private void animateDismissInAxis(View view, Axis axis, boolean dismissInPositiveDirection) { + float dismissTranslation = dismissInPositiveDirection ? mMaxTranslation : -mMaxTranslation; + ViewPropertyAnimator animator = view.animate(); + if (axis == Axis.VERTICAL) { + animator.translationY(dismissTranslation); + } else { + animator.translationX(dismissTranslation); + } + animator.alpha(MINIMUM_ALPHA).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + resetView(mView); + } + }).start(); + } + + /** + * Should be overridden in test to not access static obtain method. + */ + @VisibleForTesting + MotionEvent obtainMotionEvent(MotionEvent motionEvent) { + return MotionEvent.obtain(motionEvent); + } + + /** + * Should be overridden in test to not access static obtain method. + */ + @VisibleForTesting + VelocityTracker obtainVelocityTracker() { + return VelocityTracker.obtain(); + } + + @VisibleForTesting + int getMinimumFlingVelocity() { + return mMinimumFlingVelocity; + } + + @VisibleForTesting + int getTouchSlop() { + return mTouchSlop; + } + + @VisibleForTesting + float getPercentageOfMaxTransaltionToDismiss() { + return mPercentageOfMaxTransaltionToDismiss; + } } diff --git a/src/com/android/car/notification/headsup/CarHeadsUpNotificationAppContainer.java b/src/com/android/car/notification/headsup/CarHeadsUpNotificationAppContainer.java index b3ccc8e6..f7448fbe 100644 --- a/src/com/android/car/notification/headsup/CarHeadsUpNotificationAppContainer.java +++ b/src/com/android/car/notification/headsup/CarHeadsUpNotificationAppContainer.java @@ -17,6 +17,7 @@ package com.android.car.notification.headsup; import android.content.Context; +import android.content.res.Resources; import android.graphics.PixelFormat; import android.view.Gravity; import android.view.WindowManager; @@ -29,8 +30,6 @@ import com.android.car.notification.R; * Used to attach HUNs views to window. */ public class CarHeadsUpNotificationAppContainer extends CarHeadsUpNotificationContainer { - private static final String TAG = "CarHUNContainerApp"; - public CarHeadsUpNotificationAppContainer(Context context) { super(context, context.getSystemService(WindowManager.class)); @@ -38,16 +37,17 @@ public class CarHeadsUpNotificationAppContainer extends CarHeadsUpNotificationCo @Override protected WindowManager.LayoutParams getWindowManagerLayoutParams() { + Resources resources = getContext().getResources(); WindowManager.LayoutParams wrapperParams = new WindowManager.LayoutParams( - WindowManager.LayoutParams.MATCH_PARENT, - WindowManager.LayoutParams.WRAP_CONTENT, + resources.getDimensionPixelSize(R.dimen.headsup_container_width), + resources.getDimensionPixelSize(R.dimen.headsup_container_height), // This type allows covering status bar and receiving touch input WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); wrapperParams.gravity = getShowHunOnBottom() ? Gravity.BOTTOM : Gravity.TOP; - wrapperParams.y = (int) getContext().getResources().getDimension( + wrapperParams.y = resources.getDimensionPixelSize( R.dimen.headsup_notification_window_y_offset); return wrapperParams; } diff --git a/src/com/android/car/notification/template/CarNotificationActionsView.java b/src/com/android/car/notification/template/CarNotificationActionsView.java index d9aebb05..22a436cd 100644 --- a/src/com/android/car/notification/template/CarNotificationActionsView.java +++ b/src/com/android/car/notification/template/CarNotificationActionsView.java @@ -70,6 +70,10 @@ public class CarNotificationActionsView extends LinearLayout implements private final Drawable mActionButtonBackground; private final Drawable mCallButtonBackground; private final Drawable mDeclineButtonBackground; + @ColorInt + private final int mCallButtonTextColor; + @ColorInt + private final int mDeclineButtonTextColor; private final Drawable mUnmuteButtonBackground; private final String mReplyButtonText; private final String mPlayButtonText; @@ -130,6 +134,8 @@ public class CarNotificationActionsView extends LinearLayout implements mDeclineButtonBackground.setColorFilter( new PorterDuffColorFilter(mContext.getColor(R.color.call_decline_button), PorterDuff.Mode.SRC_IN)); + mCallButtonTextColor = mContext.getColor(R.color.call_accept_button_text); + mDeclineButtonTextColor = mContext.getColor(R.color.call_decline_button_text); mUnmuteButtonBackground = mContext.getDrawable(R.drawable.call_action_button_background); mUnmuteButtonBackground.setColorFilter( new PorterDuffColorFilter(mContext.getColor(R.color.unmute_button), @@ -227,6 +233,8 @@ public class CarNotificationActionsView extends LinearLayout implements if (mIsCategoryCall) { mActionButtons.get(0).setBackground(mCallButtonBackground); mActionButtons.get(1).setBackground(mDeclineButtonBackground); + mActionButtons.get(0).setTextColor(mCallButtonTextColor); + mActionButtons.get(1).setTextColor(mDeclineButtonTextColor); } } diff --git a/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationManagerTest.java b/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationManagerTest.java index dd84822a..0c09c006 100644 --- a/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationManagerTest.java +++ b/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationManagerTest.java @@ -24,6 +24,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -37,11 +38,13 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; +import android.os.Handler; import android.os.Looper; import android.os.UserHandle; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.testing.TestableContext; +import android.view.View; import androidx.annotation.Nullable; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -54,6 +57,8 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -106,7 +111,9 @@ public class CarHeadsUpNotificationManagerTest { @Mock KeyguardManager mKeyguardManager; @Mock - HeadsUpEntry mHeadsUpEntry; + Handler mHandlerMock; + @Captor + ArgumentCaptor<View> mViewCaptor; private CarHeadsUpNotificationManager mManager; private AlertEntry mAlertEntryMessageHeadsUp; private AlertEntry mAlertEntryNavigationHeadsUp; @@ -460,6 +467,22 @@ public class CarHeadsUpNotificationManagerTest { CarHeadsUpNotificationManager.HeadsUpState.REMOVED_FROM_QUEUE); } + @Test + public void clearCache_viewsRemovedFromCarHeadsUpNotificationContainer() { + CarHeadsUpNotificationContainer container = mManager.mHunContainer; + HeadsUpEntry notification1 = createMockHeadsUpEntry("key1"); + HeadsUpEntry notification2 = createMockHeadsUpEntry("key2"); + mManager.addActiveHeadsUpNotification(notification1); + mManager.addActiveHeadsUpNotification(notification2); + + mManager.clearCache(); + + verify(container, times(2)).removeNotification(mViewCaptor.capture()); + assertThat(mViewCaptor.getAllValues().containsAll(List.of(new View[]{ + notification1.getNotificationView(), notification2.getNotificationView()}))) + .isTrue(); + } + private void createCarHeadsUpNotificationManager() { createCarHeadsUpNotificationManager(mCarHeadsUpNotificationQueue); } @@ -491,4 +514,13 @@ public class CarHeadsUpNotificationManagerTest { when(mPackageManager.getPackageInfoAsUser(eq(packageName), anyInt(), anyInt())).thenReturn( packageInfo); } + + private HeadsUpEntry createMockHeadsUpEntry(String key) { + HeadsUpEntry headsUpEntry = mock(HeadsUpEntry.class); + when(headsUpEntry.getKey()).thenReturn(key); + when(headsUpEntry.getHandler()).thenReturn(mHandlerMock); + View headsUpNotificationView = mock(View.class); + when(headsUpEntry.getNotificationView()).thenReturn(headsUpNotificationView); + return headsUpEntry; + } }
\ No newline at end of file diff --git a/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationQueueTest.java b/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationQueueTest.java index ce87e896..1a465399 100644 --- a/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationQueueTest.java +++ b/tests/unit/src/com/android/car/notification/CarHeadsUpNotificationQueueTest.java @@ -43,7 +43,6 @@ import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.testing.TestableContext; -import androidx.annotation.Nullable; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.platform.app.InstrumentationRegistry; @@ -68,7 +67,6 @@ import java.util.Collections; import java.util.PriorityQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @RunWith(AndroidJUnit4.class) @@ -90,7 +88,6 @@ public class CarHeadsUpNotificationQueueTest { @Mock private NotificationManager mNotificationManager; - @Captor private ArgumentCaptor<TaskStackListener> mTaskStackListenerArg; @Captor @@ -118,7 +115,6 @@ public class CarHeadsUpNotificationQueueTest { when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>(Collections.singletonList(mock(AlertEntry.class)))); ExtendedMockito.doReturn(USER_ID).when(() -> NotificationUtils.getCurrentUser(any())); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); } @After @@ -130,30 +126,13 @@ public class CarHeadsUpNotificationQueueTest { } private CarHeadsUpNotificationQueue createCarHeadsUpNotificationQueue() { - return createCarHeadsUpNotificationQueue( - /* activityTaskManager= */ null, - /* notificationManager= */ null, - /* scheduledExecutorService= */ null, - /* callback= */ null); - } - - private CarHeadsUpNotificationQueue createCarHeadsUpNotificationQueue( - @Nullable ActivityTaskManager activityTaskManager, - @Nullable NotificationManager notificationManager, - @Nullable ScheduledExecutorService scheduledExecutorService, - @Nullable CarHeadsUpNotificationQueue.CarHeadsUpNotificationQueueCallback callback) { - return new CarHeadsUpNotificationQueue(mContext, - activityTaskManager != null ? activityTaskManager - : ActivityTaskManager.getInstance(), - notificationManager != null ? notificationManager - : mContext.getSystemService(NotificationManager.class), - scheduledExecutorService != null ? scheduledExecutorService - : new ScheduledThreadPoolExecutor(/* corePoolSize= */ 1), - callback != null ? callback : mCarHeadsUpNotificationQueueCallback); + return new CarHeadsUpNotificationQueue(mContext, mActivityTaskManager, mNotificationManager, + mScheduledExecutorService, mCarHeadsUpNotificationQueueCallback); } @Test public void addToQueue_prioritises_postTimeOfHeadsUp() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 4000); AlertEntry alertEntry2 = new AlertEntry(generateMockStatusBarNotification( @@ -245,6 +224,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void addToQueue_merges_newHeadsUpWithSameKey() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry alertEntry2 = new AlertEntry(generateMockStatusBarNotification( @@ -289,6 +269,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void addToQueue_handles_notificationWithNoCategory() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", /* category= */ null), 4000); @@ -493,11 +474,9 @@ public class CarHeadsUpNotificationQueueTest { @Test public void triggerCallback_sendsNotificationToCurrentUser_onHunExpiredAndEmptyQueue() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>()); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - /* activityTaskManager= */ null, mNotificationManager, - /* scheduledExecutorService= */ null, mCarHeadsUpNotificationQueueCallback); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); mCarHeadsUpNotificationQueue.addToPriorityQueue(alertEntry1); @@ -550,10 +529,7 @@ public class CarHeadsUpNotificationQueueTest { R.bool.config_expireHeadsUpWhenParked, /* value= */ false); mContext.getOrCreateTestableResources().addOverride( R.array.headsup_throttled_foreground_packages, /* value= */ new String[]{PKG_1}); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, - /* notificationManager= */ null, /* scheduledExecutorService= */ null, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); verify(mActivityTaskManager).registerTaskStackListener(mTaskStackListenerArg.capture()); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); @@ -577,10 +553,7 @@ public class CarHeadsUpNotificationQueueTest { R.bool.config_expireHeadsUpWhenParked, /* value= */ false); mContext.getOrCreateTestableResources().addOverride( R.array.headsup_throttled_foreground_packages, /* value= */ new String[]{PKG_1}); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, - /* notificationManager= */ null, /* scheduledExecutorService= */ null, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); verify(mActivityTaskManager).registerTaskStackListener(mTaskStackListenerArg.capture()); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); @@ -605,9 +578,7 @@ public class CarHeadsUpNotificationQueueTest { R.bool.config_expireHeadsUpWhenParked, /* value= */ false); mContext.getOrCreateTestableResources().addOverride( R.array.headsup_throttled_foreground_packages, /* value= */ new String[]{PKG_1}); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, /* notificationManager= */ null, mScheduledExecutorService, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); verify(mActivityTaskManager).registerTaskStackListener(mTaskStackListenerArg.capture()); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); @@ -633,9 +604,7 @@ public class CarHeadsUpNotificationQueueTest { R.bool.config_expireHeadsUpWhenParked, /* value= */ false); mContext.getOrCreateTestableResources().addOverride( R.array.headsup_throttled_foreground_packages, /* value= */ new String[]{PKG_1}); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, /* notificationManager= */ null, mScheduledExecutorService, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); verify(mActivityTaskManager).registerTaskStackListener(mTaskStackListenerArg.capture()); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); @@ -656,6 +625,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void removeFromQueue_returnsFalse_whenNotificationNotInQueue() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry alertEntry2 = new AlertEntry(generateMockStatusBarNotification( @@ -672,6 +642,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void removeFromQueue_returnsTrue_whenNotificationInQueue() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry alertEntry2 = new AlertEntry(generateMockStatusBarNotification( @@ -688,10 +659,7 @@ public class CarHeadsUpNotificationQueueTest { public void releaseQueue_removes_notificationsFromQueue() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_dismissHeadsUpWhenNotificationCenterOpens, /* value= */ false); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, - /* notificationManager= */ null, /* scheduledExecutorService= */ null, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); AlertEntry alertEntry2 = new AlertEntry(generateMockStatusBarNotification( @@ -710,14 +678,11 @@ public class CarHeadsUpNotificationQueueTest { public void releaseQueue_dismiss_activeHUNs() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_dismissHeadsUpWhenNotificationCenterOpens, /* value= */ true); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>(Collections.singletonList(alertEntry))); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, - /* notificationManager= */ null, /* scheduledExecutorService= */ null, - mCarHeadsUpNotificationQueueCallback); mCarHeadsUpNotificationQueue.releaseQueue(); @@ -729,16 +694,13 @@ public class CarHeadsUpNotificationQueueTest { public void releaseQueue_doesNot_dismiss_nonDismissibleHUNs() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_dismissHeadsUpWhenNotificationCenterOpens, /* value= */ true); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry( generateMockStatusBarNotification("key1", Notification.CATEGORY_CALL, /* isOngoing= */ true, /* hasFullScreenIntent= */ true), /* postTime= */ 1000); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>(Collections.singletonList(alertEntry))); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, - /* notificationManager= */ null, /* scheduledExecutorService= */ null, - mCarHeadsUpNotificationQueueCallback); mCarHeadsUpNotificationQueue.releaseQueue(); @@ -747,6 +709,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void onStateChange_internalCategory_hunRemovalFlagTrue_setHunRemovalFlagToFalse() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "HUN_QUEUE_INTERNAL"), 1000); mCarHeadsUpNotificationQueue.mCancelInternalNotificationOnStateChange = true; @@ -759,6 +722,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void onStateChange_internalCategory_hunRemovalFlagTrue_setHunExpiredToFalse() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "HUN_QUEUE_INTERNAL"), 1000); mCarHeadsUpNotificationQueue.mCancelInternalNotificationOnStateChange = true; @@ -771,9 +735,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void onStateChange_internalCategory_hunRemovalFlagTrue_cancelHunForCurrentUser() { - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - /* activityTaskManager= */ null, mNotificationManager, - /* scheduledExecutorService= */ null, mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "HUN_QUEUE_INTERNAL"), 1000); mCarHeadsUpNotificationQueue.mCancelInternalNotificationOnStateChange = true; @@ -787,9 +749,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void onStateChange_notInternalCategory_hunRemovalFlagTrue_notCancelHunForCurrentUser() { - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - /* activityTaskManager= */ null, mNotificationManager, - /* scheduledExecutorService= */ null, mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); mCarHeadsUpNotificationQueue.mCancelInternalNotificationOnStateChange = true; @@ -803,6 +763,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void onStateChange_notInternalCategory_hunRemovalFlagTrue_doesNotsetHunRemovalFlag() { + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); mCarHeadsUpNotificationQueue.mCancelInternalNotificationOnStateChange = true; @@ -817,11 +778,9 @@ public class CarHeadsUpNotificationQueueTest { public void onStateChange_dismissed_callbackScheduled() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_expireHeadsUpWhenParked, /* value= */ false); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>()); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - /* activityTaskManager= */ null, /* notificationManager= */ null, - mScheduledExecutorService, mCarHeadsUpNotificationQueueCallback); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry nextAlertEntry = new AlertEntry(generateMockStatusBarNotification( @@ -839,11 +798,9 @@ public class CarHeadsUpNotificationQueueTest { public void onStateChange_removedBySender_callbackScheduled() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_expireHeadsUpWhenParked, /* value= */ false); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>()); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - /* activityTaskManager= */ null, /* notificationManager= */ null, - mScheduledExecutorService, mCarHeadsUpNotificationQueueCallback); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry nextAlertEntry = new AlertEntry(generateMockStatusBarNotification( @@ -861,9 +818,9 @@ public class CarHeadsUpNotificationQueueTest { public void onStateChange_shown_doesNot_showNextNotificationInQueue() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_expireHeadsUpWhenParked, /* value= */ false); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>()); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry nextAlertEntry = new AlertEntry(generateMockStatusBarNotification( @@ -881,9 +838,9 @@ public class CarHeadsUpNotificationQueueTest { public void onStateChange_removedFromQueue_does_not_showNextNotificationInQueue() { mContext.getOrCreateTestableResources().addOverride( R.bool.config_expireHeadsUpWhenParked, /* value= */ false); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); when(mCarHeadsUpNotificationQueueCallback.getActiveHeadsUpNotifications()).thenReturn( new ArrayList<>()); - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), 1000); AlertEntry nextAlertEntry = new AlertEntry(generateMockStatusBarNotification( @@ -926,9 +883,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void scheduleCallback_schedulesNewTask_whenNoTaskScheduled() { - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, /* notificationManager= */ null, mScheduledExecutorService, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); mCarHeadsUpNotificationQueue.addToPriorityQueue(alertEntry1); @@ -945,9 +900,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void scheduleCallback_schedulesNewTask_whenShorterTaskScheduled() { - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, /* notificationManager= */ null, mScheduledExecutorService, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); mCarHeadsUpNotificationQueue.addToPriorityQueue(alertEntry1); @@ -966,9 +919,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void scheduleCallback_cancelsFutureTask_whenShorterTaskScheduled() { - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, /* notificationManager= */ null, mScheduledExecutorService, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); mCarHeadsUpNotificationQueue.addToPriorityQueue(alertEntry1); @@ -986,9 +937,7 @@ public class CarHeadsUpNotificationQueueTest { @Test public void scheduleCallback_doesNotScheduleNewTask_whenLongerTaskScheduled() { - mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue( - mActivityTaskManager, /* notificationManager= */ null, mScheduledExecutorService, - mCarHeadsUpNotificationQueueCallback); + mCarHeadsUpNotificationQueue = createCarHeadsUpNotificationQueue(); AlertEntry alertEntry1 = new AlertEntry(generateMockStatusBarNotification( "key1", "msg"), /* postTime= */ 1000); mCarHeadsUpNotificationQueue.addToPriorityQueue(alertEntry1); @@ -1034,5 +983,4 @@ public class CarHeadsUpNotificationQueueTest { mockRunningTaskInfo.displayAreaFeatureId = displayAreaFeatureId; return mockRunningTaskInfo; } - } diff --git a/tests/unit/src/com/android/car/notification/CarNotificationListenerTest.java b/tests/unit/src/com/android/car/notification/CarNotificationListenerTest.java index 380d883e..85f49056 100644 --- a/tests/unit/src/com/android/car/notification/CarNotificationListenerTest.java +++ b/tests/unit/src/com/android/car/notification/CarNotificationListenerTest.java @@ -20,8 +20,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -30,6 +32,7 @@ import android.app.NotificationManager; import android.content.Context; import android.os.Handler; import android.os.Message; +import android.os.RemoteException; import android.os.UserHandle; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; @@ -37,8 +40,7 @@ import android.service.notification.StatusBarNotification; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.android.internal.statusbar.IStatusBarService; - +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -52,16 +54,15 @@ public class CarNotificationListenerTest { private static final int CURRENT_USER_ID = 10; private static final String TEST_KEY = "TEST_KEY"; - private static final String TEST_OVERRIDE_GROUP_KEY = "TEST_OVERRIDE_GROUP_KEY"; + private static final String TEST_OLD_OVERRIDE_GROUP_KEY = "TEST_OLD_OVERRIDE_GROUP_KEY"; + private static final String TEST_NEW_OVERRIDE_GROUP_KEY = "TEST_NEW_OVERRIDE_GROUP_KEY"; - private Context mContext; + private final Object mLock = new Object(); private CarNotificationListener mCarNotificationListener; private NotificationListenerService.RankingMap mRankingMap; @Mock private CarHeadsUpNotificationManager mCarHeadsUpNotificationManager; @Mock - private IStatusBarService mBarService; - @Mock private Handler mHandler; @Mock private StatusBarNotification mStatusBarNotification; @@ -71,23 +72,43 @@ public class CarNotificationListenerTest { private CarUxRestrictionManagerWrapper mCarUxRestrictionManagerWrapper; @Before - public void setup() { + public void setup() throws InterruptedException { MockitoAnnotations.initMocks(this); - mContext = ApplicationProvider.getApplicationContext(); - mCarNotificationListener = new CarNotificationListener(); + Context context = ApplicationProvider.getApplicationContext(); + mCarNotificationListener = spy(new CarNotificationListener()); mCarNotificationListener.setHandler(mHandler); - mCarNotificationListener.registerAsSystemService(mContext, mCarUxRestrictionManagerWrapper, + // wait for the listener to be connected before going further + doAnswer(a -> { + a.callRealMethod(); + synchronized (mLock) { + mLock.notify(); + } + return null; + }).when(mCarNotificationListener).onListenerConnected(); + mCarNotificationListener.registerAsSystemService(context, mCarUxRestrictionManagerWrapper, mCarHeadsUpNotificationManager); + synchronized (mLock) { + while (!mCarNotificationListener.getIsListenerConnected()) { + mLock.wait(); + } + } mCarNotificationListener.setNotificationDataManager(mNotificationDataManager); createMockRankingMap(NotificationManager.IMPORTANCE_DEFAULT); when(mStatusBarNotification.getKey()).thenReturn(TEST_KEY); - when(mStatusBarNotification.getOverrideGroupKey()).thenReturn(TEST_OVERRIDE_GROUP_KEY); + when(mStatusBarNotification.getOverrideGroupKey()).thenReturn(TEST_OLD_OVERRIDE_GROUP_KEY); when(mStatusBarNotification.getUser()).thenReturn(new UserHandle(CURRENT_USER_ID)); } + @After + public void tearDown() throws RemoteException { + if (mCarNotificationListener != null) { + mCarNotificationListener.unregisterAsSystemService(); + } + } + @Test public void onNotificationPosted_isHun_notForCurrentUser_ignoresTheEvent() { UserHandle userHandle = new UserHandle(UserHandle.USER_NULL); @@ -166,7 +187,7 @@ public class CarNotificationListenerTest { mCarNotificationListener.onNotificationPosted(mStatusBarNotification, mRankingMap); - verify(mStatusBarNotification).setOverrideGroupKey(eq(null)); + verify(mStatusBarNotification).setOverrideGroupKey(eq(TEST_NEW_OVERRIDE_GROUP_KEY)); } @Test @@ -306,7 +327,7 @@ public class CarNotificationListenerTest { mCarNotificationListener.onStateChange(alertEntry, CarHeadsUpNotificationManager.HeadsUpState.DISMISSED); - verify(mStatusBarNotification).setOverrideGroupKey(eq(null)); + verify(mStatusBarNotification).setOverrideGroupKey(eq(TEST_NEW_OVERRIDE_GROUP_KEY)); } @Test @@ -338,7 +359,7 @@ public class CarNotificationListenerTest { testingHeadsUpNotification(false); UserHandle userHandle = new UserHandle(CURRENT_USER_ID); when(mStatusBarNotification.getUser()).thenReturn(userHandle); - when(mStatusBarNotification.getOverrideGroupKey()).thenReturn(null); + when(mStatusBarNotification.getOverrideGroupKey()).thenReturn(TEST_NEW_OVERRIDE_GROUP_KEY); mCarNotificationListener.onNotificationPosted(mStatusBarNotification, mRankingMap); reset(mHandler); @@ -354,7 +375,7 @@ public class CarNotificationListenerTest { when(mStatusBarNotification.getUser()).thenReturn(userHandle); mCarNotificationListener.onNotificationPosted(mStatusBarNotification, mRankingMap); when(mStatusBarNotification.getOverrideGroupKey()) - .thenReturn(TEST_OVERRIDE_GROUP_KEY + "A"); + .thenReturn(TEST_OLD_OVERRIDE_GROUP_KEY + "A"); reset(mHandler); mCarNotificationListener.onNotificationRankingUpdate(mRankingMap); @@ -384,7 +405,7 @@ public class CarNotificationListenerTest { /* suppressedVisualEffects= */ 0, /* importance= */ importance, /* explanation= */ null, - /* overrideGroupKey= */ null, + TEST_NEW_OVERRIDE_GROUP_KEY, /* channel= */ null, /* overridePeople= */ new ArrayList<>(), /* snoozeCriteria= */ new ArrayList<>(), diff --git a/tests/unit/src/com/android/car/notification/HeadsUpNotificationOnTouchListenerTest.java b/tests/unit/src/com/android/car/notification/HeadsUpNotificationOnTouchListenerTest.java new file mode 100644 index 00000000..e2cd469b --- /dev/null +++ b/tests/unit/src/com/android/car/notification/HeadsUpNotificationOnTouchListenerTest.java @@ -0,0 +1,398 @@ +/* + * Copyright (C) 2023 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.car.notification; + + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyFloat; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.animation.Animator; +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.testing.TestableContext; +import android.testing.TestableResources; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.ViewParent; +import android.view.ViewPropertyAnimator; +import android.view.ViewTreeObserver; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.stubbing.Answer; + +@RunWith(AndroidJUnit4.class) +public class HeadsUpNotificationOnTouchListenerTest { + private static final int TRANSLATION = 5; + private static final int VELOCITY = 5; + private static final int VIEW_SIZE = 20; + + @Rule + public final TestableContext mContext = new TestableContext( + InstrumentationRegistry.getInstrumentation().getTargetContext()) { + @Override + public Context createApplicationContext(ApplicationInfo application, int flags) { + return this; + } + }; + private TestableResources mTestableResources; + private HeadsUpNotificationOnTouchListener mHeadsUpNotificationOnTouchListener; + @Mock + private View mView; + @Mock + private ViewParent mViewParent; + @Mock + private ViewPropertyAnimator mViewPropertyAnimator; + @Mock + private ViewTreeObserver mViewTreeObserver; + @Mock + private MotionEvent mDownMotionEvent; + @Mock + private MotionEvent mMoveMotionEventLessThanTouchSlop; + @Mock + private MotionEvent mMoveMotionEventMoreThanTouchSlop; + @Mock + private MotionEvent mCancelMotionEvent; + @Mock + private MotionEvent mUpMotionEventMoreThanThreshold; + @Mock + private MotionEvent mUpMotionEventLessThanThreshold; + @Mock + private MotionEvent mNewMotionEvent; + @Mock + private VelocityTracker mVelocityTracker; + @Mock + private HeadsUpNotificationOnTouchListener.DismissCallbacks mDismissCallbacks; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mTestableResources = mContext.getOrCreateTestableResources(); + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, false); + mTestableResources.addOverride(R.dimen.max_translation_headsup, 0f); + setUpView(); + createHeadsUpNotificationOnTouchListener(); + setUpMotionEvents(); + } + + @Test + public void onTouch_actionCancel_viewTranslationReset() { + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mCancelMotionEvent); + + verify(mView).animate(); + verify(mViewPropertyAnimator).translationX(0); + verify(mViewPropertyAnimator).translationY(0); + } + + @Test + public void onTouch_actionCancel_viewAlphaReset() { + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mCancelMotionEvent); + + verify(mView).animate(); + verify(mViewPropertyAnimator).alpha(1); + } + + @Test + public void onTouch_actionCancel_callbackNotSent() { + mHeadsUpNotificationOnTouchListener.onTouch(mView, mCancelMotionEvent); + + verify(mDismissCallbacks, times(0)).onDismiss(); + } + + @Test + public void onTouch_actionMove_moveLessThanTouchSlop_horizontal_returnsFalse() { + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + boolean returnValue = mHeadsUpNotificationOnTouchListener + .onTouch(mView, mMoveMotionEventLessThanTouchSlop); + + assertThat(returnValue).isFalse(); + } + + @Test + public void onTouch_actionMove_moveLessThanTouchSlop_vertical_returnsFalse() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + boolean returnValue = mHeadsUpNotificationOnTouchListener + .onTouch(mView, mMoveMotionEventLessThanTouchSlop); + + assertThat(returnValue).isFalse(); + } + + @Test + public void onTouch_actionMove_moveLessThanTouchSlop_horizontal_viewNotMoved() { + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventLessThanTouchSlop); + + verify(mView, times(0)).setTranslationX(anyFloat()); + } + + @Test + public void onTouch_actionMove_moveLessThanTouchSlop_vertical_viewNotMoved() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventLessThanTouchSlop); + + verify(mView, times(0)).setTranslationY(anyFloat()); + } + + @Test + public void onTouch_actionMove_moveMoreThanTouchSlop_horizontal_viewTranslationSet() { + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + verify(mView, times(1)).setTranslationX(TRANSLATION); + verify(mView, times(0)).setTranslationY(anyFloat()); + + } + + @Test + public void onTouch_actionMove_moveMoreThanTouchSlop_vertical_viewTranslationSet() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + verify(mView, times(1)).setTranslationY(TRANSLATION); + verify(mView, times(0)).setTranslationX(anyFloat()); + } + + @Test + public void onTouch_actionUp_moveMoreThanMin_horizontal_callbackSent() { + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventMoreThanThreshold); + + verify(mDismissCallbacks, times(1)).onDismiss(); + } + + @Test + public void onTouch_actionUp_moveMoreThanMin_vertical_callbackSent() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventMoreThanThreshold); + + verify(mDismissCallbacks, times(1)).onDismiss(); + } + + @Test + public void onTouch_actionUp_flingMoreThanThreshold_horizontal_callbackSent() { + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() + VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventLessThanThreshold); + + verify(mDismissCallbacks, times(1)).onDismiss(); + } + + @Test + public void onTouch_actionUp_flingMoreThanThreshold_vertical_callbackSent() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() + VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventLessThanThreshold); + + verify(mDismissCallbacks, times(1)).onDismiss(); + } + + @Test + public void onTouch_actionUp_flingEqualInBothDirection_horizontal_callbackNotSent() { + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() + VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() + VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventLessThanThreshold); + + verify(mDismissCallbacks, never()).onDismiss(); + } + + @Test + public void onTouch_actionUp_flingEqualInBothDirection_vertical_callbackNotSent() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() + VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() + VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventLessThanThreshold); + + verify(mDismissCallbacks, never()).onDismiss(); + } + + @Test + public void onTouch_actionUp_moveLessThanMin_velocityLessThanMin_horizontal_callbackNotSent() { + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventLessThanThreshold); + + verify(mDismissCallbacks, never()).onDismiss(); + } + + @Test + public void onTouch_actionUp_moveLessThanMin_velocityLessThanMin_vertical_callbackNotSent() { + mTestableResources + .addOverride(R.bool.config_isHeadsUpNotificationDismissibleVertically, true); + createHeadsUpNotificationOnTouchListener(); + when(mVelocityTracker.getXVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + when(mVelocityTracker.getYVelocity()).thenReturn( + (float) mHeadsUpNotificationOnTouchListener.getMinimumFlingVelocity() - VELOCITY); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mDownMotionEvent); + mHeadsUpNotificationOnTouchListener.onTouch(mView, mMoveMotionEventMoreThanTouchSlop); + + mHeadsUpNotificationOnTouchListener.onTouch(mView, mUpMotionEventLessThanThreshold); + + verify(mDismissCallbacks, never()).onDismiss(); + } + + private void setUpView() { + when(mView.getContext()).thenReturn(mContext); + when(mView.getViewTreeObserver()).thenReturn(mViewTreeObserver); + doAnswer((Answer<Void>) invocation -> { + ViewTreeObserver.OnGlobalLayoutListener listener = invocation.getArgument(0); + listener.onGlobalLayout(); + return null; + }).when(mViewTreeObserver).addOnGlobalLayoutListener( + any(ViewTreeObserver.OnGlobalLayoutListener.class)); + when(mView.animate()).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.alpha(anyFloat())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.translationX(anyFloat())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.translationY(anyFloat())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.setListener(nullable(Animator.AnimatorListener.class))) + .thenReturn(mViewPropertyAnimator); + when(mView.getHeight()).thenReturn(VIEW_SIZE); + when(mView.getWidth()).thenReturn(VIEW_SIZE); + when(mView.getParent()).thenReturn(mViewParent); + } + + private void setUpMotionEvents() { + float touchSlop = (float) mHeadsUpNotificationOnTouchListener.getTouchSlop(); + float percentageOfMaxTransaltionToDismiss = (float) mHeadsUpNotificationOnTouchListener + .getPercentageOfMaxTransaltionToDismiss(); + when(mDownMotionEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_DOWN); + when(mDownMotionEvent.getRawX()).thenReturn((float) 0); + when(mDownMotionEvent.getRawY()).thenReturn((float) 0); + + when(mCancelMotionEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_CANCEL); + + when(mMoveMotionEventLessThanTouchSlop.getActionMasked()) + .thenReturn(MotionEvent.ACTION_MOVE); + when(mMoveMotionEventLessThanTouchSlop.getRawX()).thenReturn(touchSlop - TRANSLATION); + when(mMoveMotionEventLessThanTouchSlop.getRawY()).thenReturn(touchSlop - TRANSLATION); + + + when(mMoveMotionEventMoreThanTouchSlop.getActionMasked()) + .thenReturn(MotionEvent.ACTION_MOVE); + when(mMoveMotionEventMoreThanTouchSlop.getRawX()).thenReturn(touchSlop + TRANSLATION); + when(mMoveMotionEventMoreThanTouchSlop.getRawY()).thenReturn(touchSlop + TRANSLATION); + + when(mUpMotionEventMoreThanThreshold.getActionMasked()) + .thenReturn(MotionEvent.ACTION_UP); + when(mUpMotionEventMoreThanThreshold.getRawX()).thenReturn( + percentageOfMaxTransaltionToDismiss * VIEW_SIZE + TRANSLATION); + when(mUpMotionEventMoreThanThreshold.getRawY()).thenReturn( + percentageOfMaxTransaltionToDismiss * VIEW_SIZE + TRANSLATION); + + when(mUpMotionEventLessThanThreshold.getActionMasked()) + .thenReturn(MotionEvent.ACTION_UP); + when(mUpMotionEventLessThanThreshold.getRawX()).thenReturn( + percentageOfMaxTransaltionToDismiss * VIEW_SIZE - TRANSLATION); + when(mUpMotionEventLessThanThreshold.getRawY()).thenReturn( + percentageOfMaxTransaltionToDismiss * VIEW_SIZE - TRANSLATION); + + } + + private void createHeadsUpNotificationOnTouchListener() { + mHeadsUpNotificationOnTouchListener = new HeadsUpNotificationOnTouchListener(mView, + /* dismissOnSwipe= */ true, mDismissCallbacks) { + @Override + MotionEvent obtainMotionEvent(MotionEvent motionEvent) { + return mNewMotionEvent; + } + + @Override + VelocityTracker obtainVelocityTracker() { + return mVelocityTracker; + } + }; + } +} |