summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2024-03-06 09:30:03 -0800
committerXin Li <delphij@google.com>2024-03-06 09:30:03 -0800
commitbfaaf12fae65601de1934ab6f552b8c077eded1e (patch)
tree55f6ac2b7a7773aa7045c186a89cc2a6419861a1
parent979f1f462642405aa43b01fa2cee8b92429c2bc7 (diff)
parent0ae749dd859f6a8296d4743511c1d28edc3e4089 (diff)
downloadNotification-bfaaf12fae65601de1934ab6f552b8c077eded1e.tar.gz
Merge Android 14 QPR2 to AOSP main
Bug: 319669529 Merged-In: I58119a9842d5d54225f6aed7463c1b78ada4d6be Change-Id: Ic85ae64c103d4f24aa65bf2dc6c1529818769811
-rw-r--r--Android.bp4
-rw-r--r--res/drawable/ic_mute.xml10
-rw-r--r--res/drawable/ic_play_arrow.xml13
-rw-r--r--res/drawable/ic_reply.xml10
-rw-r--r--res/drawable/ic_unmute.xml14
-rw-r--r--res/layout/basic_headsup_notification_template.xml8
-rw-r--r--res/layout/basic_notification_template.xml8
-rw-r--r--res/layout/call_headsup_notification_template.xml13
-rw-r--r--res/layout/call_notification_template.xml13
-rw-r--r--res/layout/car_emergency_headsup_notification_template.xml8
-rw-r--r--res/layout/car_emergency_notification_template.xml8
-rw-r--r--res/layout/car_information_headsup_notification_template.xml8
-rw-r--r--res/layout/car_information_notification_template.xml8
-rw-r--r--res/layout/car_notification_body_view.xml20
-rw-r--r--res/layout/car_warning_headsup_notification_template.xml8
-rw-r--r--res/layout/car_warning_notification_template.xml8
-rw-r--r--res/layout/inbox_headsup_notification_template.xml8
-rw-r--r--res/layout/inbox_notification_template.xml8
-rw-r--r--res/layout/media_notification_template.xml8
-rw-r--r--res/layout/message_headsup_notification_template.xml8
-rw-r--r--res/layout/message_notification_template.xml8
-rw-r--r--res/layout/navigation_headsup_notification_template.xml8
-rw-r--r--res/layout/progress_notification_template.xml8
-rw-r--r--res/values-af/strings.xml3
-rw-r--r--res/values-am/strings.xml3
-rw-r--r--res/values-ar/strings.xml3
-rw-r--r--res/values-as/strings.xml3
-rw-r--r--res/values-az/strings.xml3
-rw-r--r--res/values-b+sr+Latn/strings.xml3
-rw-r--r--res/values-be/strings.xml3
-rw-r--r--res/values-bg/strings.xml3
-rw-r--r--res/values-bn/strings.xml3
-rw-r--r--res/values-bs/strings.xml3
-rw-r--r--res/values-ca/strings.xml3
-rw-r--r--res/values-cs/strings.xml3
-rw-r--r--res/values-da/strings.xml3
-rw-r--r--res/values-de/strings.xml3
-rw-r--r--res/values-el/strings.xml3
-rw-r--r--res/values-en-rAU/strings.xml3
-rw-r--r--res/values-en-rCA/strings.xml3
-rw-r--r--res/values-en-rGB/strings.xml3
-rw-r--r--res/values-en-rIN/strings.xml3
-rw-r--r--res/values-en-rXC/strings.xml3
-rw-r--r--res/values-es-rUS/strings.xml5
-rw-r--r--res/values-es/strings.xml3
-rw-r--r--res/values-et/strings.xml3
-rw-r--r--res/values-eu/strings.xml5
-rw-r--r--res/values-fa/strings.xml3
-rw-r--r--res/values-fi/strings.xml3
-rw-r--r--res/values-fr-rCA/strings.xml3
-rw-r--r--res/values-fr/strings.xml3
-rw-r--r--res/values-gl/strings.xml3
-rw-r--r--res/values-gu/strings.xml3
-rw-r--r--res/values-hi/strings.xml3
-rw-r--r--res/values-hr/strings.xml3
-rw-r--r--res/values-hu/strings.xml3
-rw-r--r--res/values-hy/strings.xml3
-rw-r--r--res/values-in/strings.xml3
-rw-r--r--res/values-is/strings.xml3
-rw-r--r--res/values-it/strings.xml3
-rw-r--r--res/values-iw/strings.xml3
-rw-r--r--res/values-ja/strings.xml3
-rw-r--r--res/values-ka/strings.xml3
-rw-r--r--res/values-kk/strings.xml3
-rw-r--r--res/values-km/strings.xml3
-rw-r--r--res/values-kn/strings.xml7
-rw-r--r--res/values-ko/strings.xml3
-rw-r--r--res/values-ky/strings.xml3
-rw-r--r--res/values-lo/strings.xml3
-rw-r--r--res/values-lt/strings.xml3
-rw-r--r--res/values-lv/strings.xml3
-rw-r--r--res/values-mk/strings.xml3
-rw-r--r--res/values-ml/strings.xml12
-rw-r--r--res/values-mn/strings.xml3
-rw-r--r--res/values-mr/strings.xml3
-rw-r--r--res/values-ms/strings.xml3
-rw-r--r--res/values-my/strings.xml3
-rw-r--r--res/values-nb/strings.xml3
-rw-r--r--res/values-ne/strings.xml3
-rw-r--r--res/values-nl/strings.xml3
-rw-r--r--res/values-or/strings.xml3
-rw-r--r--res/values-pa/strings.xml3
-rw-r--r--res/values-pl/strings.xml3
-rw-r--r--res/values-pt-rPT/strings.xml3
-rw-r--r--res/values-pt/strings.xml3
-rw-r--r--res/values-ro/strings.xml3
-rw-r--r--res/values-ru/strings.xml3
-rw-r--r--res/values-si/strings.xml3
-rw-r--r--res/values-sk/strings.xml3
-rw-r--r--res/values-sl/strings.xml3
-rw-r--r--res/values-sq/strings.xml3
-rw-r--r--res/values-sr/strings.xml3
-rw-r--r--res/values-sv/strings.xml3
-rw-r--r--res/values-sw/strings.xml3
-rw-r--r--res/values-ta/strings.xml3
-rw-r--r--res/values-te/strings.xml3
-rw-r--r--res/values-th/strings.xml3
-rw-r--r--res/values-tl/strings.xml3
-rw-r--r--res/values-tr/strings.xml3
-rw-r--r--res/values-uk/strings.xml3
-rw-r--r--res/values-ur/strings.xml3
-rw-r--r--res/values-uz/strings.xml3
-rw-r--r--res/values-vi/strings.xml3
-rw-r--r--res/values-zh-rCN/strings.xml3
-rw-r--r--res/values-zh-rHK/strings.xml3
-rw-r--r--res/values-zh-rTW/strings.xml3
-rw-r--r--res/values-zu/strings.xml3
-rw-r--r--res/values/colors.xml59
-rw-r--r--res/values/config.xml5
-rw-r--r--res/values/dimens.xml51
-rw-r--r--res/values/strings.xml2
-rw-r--r--res/values/styles.xml37
-rw-r--r--res/values/themes.xml1
-rw-r--r--src/com/android/car/notification/CarHeadsUpNotificationManager.java87
-rw-r--r--src/com/android/car/notification/CarHeadsUpNotificationQueue.java12
-rw-r--r--src/com/android/car/notification/CarNotificationItemTouchListener.java17
-rw-r--r--src/com/android/car/notification/CarNotificationListener.java22
-rw-r--r--src/com/android/car/notification/DismissAnimationHelper.java10
-rw-r--r--src/com/android/car/notification/HeadsUpEntry.java7
-rw-r--r--src/com/android/car/notification/HeadsUpNotificationOnTouchListener.java316
-rw-r--r--src/com/android/car/notification/headsup/CarHeadsUpNotificationAppContainer.java10
-rw-r--r--src/com/android/car/notification/template/CarNotificationActionsView.java8
-rw-r--r--tests/unit/src/com/android/car/notification/CarHeadsUpNotificationManagerTest.java34
-rw-r--r--tests/unit/src/com/android/car/notification/CarHeadsUpNotificationQueueTest.java108
-rw-r--r--tests/unit/src/com/android/car/notification/CarNotificationListenerTest.java53
-rw-r--r--tests/unit/src/com/android/car/notification/HeadsUpNotificationOnTouchListenerTest.java398
126 files changed, 1210 insertions, 513 deletions
diff --git a/Android.bp b/Android.bp
index 1e358df6..14931afd 100644
--- a/Android.bp
+++ b/Android.bp
@@ -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>&#160;more&#160;from&#160;<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;
+ }
+ };
+ }
+}