diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 9d4fa83e6cbbe..6cf284320cdb6 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -95,7 +95,6 @@
"Voicemail messages"
"Wi-Fi Calling"
"SIM status"
- "High priority SIM status"
"Peer requested TTY Mode FULL"
"Peer requested TTY Mode HCO"
"Peer requested TTY Mode VCO"
@@ -1255,10 +1254,10 @@
"Tap to see all networks"
"Connect"
"All networks"
- "Allow suggested Wi‑Fi networks?"
- "%s suggested networks. Device may connect automatically."
- "Allow"
- "No, thanks"
+ "Connect to Wi‑Fi networks?"
+ "Suggested by %s"
+ "Yes"
+ "No"
"Wi‑Fi will turn on automatically"
"When you\'re near a high‑quality saved network"
"Don\'t turn back on"
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 39da5455603f5..f62b3857b9304 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -95,7 +95,6 @@
"Voicemail messages"
"Wi-Fi calling"
"SIM status"
- "High priority SIM status"
"Peer requested TTY Mode FULL"
"Peer requested TTY Mode HCO"
"Peer requested TTY Mode VCO"
@@ -1255,10 +1254,10 @@
"Tap to see all networks"
"Connect"
"All networks"
- "Allow suggested Wi‑Fi networks?"
- "%s suggested networks. Device may connect automatically."
- "Allow"
- "No thanks"
+ "Connect to Wi‑Fi networks?"
+ "Suggested by %s"
+ "Yes"
+ "No"
"Wi‑Fi will turn on automatically"
"When you\'re near a high quality saved network"
"Don\'t turn back on"
diff --git a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
index 363d88544a03f..7846be161c0fa 100644
--- a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
@@ -17,5 +17,5 @@
- "Pesquisar definições"
+ "Definições de pesquisa"
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index f1fc9f9e3d4ed..13890e0292742 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -452,7 +452,7 @@
"বাতিল"
"ঠিক আছে"
"চালু করুন"
- "\'বিরক্ত করবে না\' মোড চালু করুন"
+ "\'বিরক্ত করবেন না\' মোড চালু করুন"
"কখনও নয়"
"শুধুমাত্র অগ্রাধিকার"
"%1$s. %2$s"
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 7874aeb02996d..beb1ac5469497 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -141,7 +141,7 @@
"Aplicaciones eliminadas"
"Aplicaciones y usuarios eliminados"
"Actualizaciones del sistema"
- "Conexión a red por USB"
+ "Conexión USB"
"Hotspot portátil"
"Conexión Bluetooth"
"Compartir conexión"
@@ -286,7 +286,7 @@
"Esperar que se conecte el depurador para iniciar la aplicación"
"Entrada"
"Dibujo"
- "Procesamiento acelerado mediante hardware"
+ "Representación acelerada mediante hardware"
"Multimedia"
"Supervisión"
"Modo estricto"
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 3a20d04d7ab2e..238eba58e0a52 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -46,7 +46,7 @@
"सीमित कनेक्शन"
"इंटरनेट कनेक्शन नहीं है"
"साइन इन करना ज़रूरी है"
- "ऐक्सेस पॉइंट फ़िलहाल भरा हुआ है"
+ "एक्सेस पॉइंट फ़िलहाल भरा हुआ है"
"%1$s के ज़रिए कनेक्ट"
"%1$s के ज़रिए उपलब्ध"
"%1$s खोला जा रहा है"
@@ -68,7 +68,7 @@
"युग्मित कर रहा है…"
"जुड़ गया (फ़ोन के ऑडियो को छोड़कर)%1$s"
"जुड़ गया (मीडिया ऑडियो को छोड़कर)%1$s"
- "जुड़ गया (मैसेज का ऐक्सेस नहीं)%1$s"
+ "जुड़ गया (मैसेज का एक्सेस नहीं)%1$s"
"जुड़ गया (फ़ोन या मीडिया ऑडियो को छोड़कर)%1$s"
"जुड़ गया, बैटरी का लेवल %1$s%2$s"
"जुड़ गया (फ़ोन के ऑडियो को छोड़कर), बैटरी का लेवल %1$s%2$s"
@@ -88,7 +88,7 @@
"संपर्क साझाकरण के लिए उपयोग करें"
"इंटरनेट कनेक्शन साझाकरण"
"लेख संदेश"
- "सिम ऐक्सेस"
+ "सिम एक्सेस"
"HD ऑडियो: %1$s"
"HD ऑडियो"
"सुनने में मदद करने वाले डिवाइस"
@@ -200,7 +200,7 @@
"यह उपयोगकर्ता, डेवलपर के लिए सेटिंग और टूल का इस्तेमाल नहीं कर सकता"
"VPN सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"
"टेदरिंग सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"
- "ऐक्सेस पॉइंट के नाम की सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं"
+ "एक्सेस पॉइंट के नाम की सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं"
"USB डीबग करना"
"डीबग मोड जब USB कनेक्ट किया गया हो"
"USB डीबग करने की मंज़ूरी रद्द करें"
@@ -414,7 +414,7 @@
"बंद किया गया"
"अनुमति है"
"अनुमति नहीं है"
- "अनजान ऐप्लिकेशन इंस्टॉल करने का ऐक्सेस"
+ "अनजान ऐप्लिकेशन इंस्टॉल करने का एक्सेस"
"सेटिंग का होम पेज"
- "0%"
diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml
index 7368f1d105f26..5cffafed6689c 100644
--- a/packages/SettingsLib/res/values-hy/arrays.xml
+++ b/packages/SettingsLib/res/values-hy/arrays.xml
@@ -43,7 +43,7 @@
- "Միացված է %1$s-ին"
- "Անջատված"
- "Անջատվում է %1$s-ից…"
- - "Անջատված է"
+ - "Անջատած է"
- "Անհաջող"
- "Արգելափակված"
- "Վատ ցանցից ժամանակավոր խուսափում"
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index a74b4ae3ae9e5..bf587405c6689 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -263,7 +263,7 @@
"Միացնել ցուցադրման հատկանիշների ստուգումը"
"Միշտ ակտիվացրած պահել բջջային տվյալները, նույնիսկ Wi‑Fi-ը միացրած ժամանակ (ցանցերի միջև արագ փոխարկման համար):"
"Օգտագործել սարքակազմի արագացման միացումը, եթե հասանելի է"
- "Թույլատրե՞լ USB վրիպազերծումը:"
+ "Թույլատրե՞լ USB-ի վրիպազերծումը:"
"USB վրիպազերծումը միայն ծրագրավորման նպատակների համար է: Օգտագործեք այն ձեր համակարգչից տվյալները ձեր սարք պատճենելու համար, առանց ծանուցման ձեր սարքի վրա ծրագրեր տեղադրելու և տվյալների մատյանը ընթերցելու համար:"
"Փակե՞լ USB-ի վրիպազերծման մուտքը` անջատելով այն բոլոր համակարգիչներից, որտեղ նախկինում թույլատրել էիք:"
"Ընդունե՞լ ծրագրավորման կարգավորումներ:"
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 57e690d46b23d..cf442b73e7216 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -159,7 +159,7 @@
"ஒலித்திறன்"
"உருவாக்கப்படும் பேச்சின் டோன் பாதிக்கப்படும்"
"மொழி"
- "அமைப்பின் மொழியைப் பயன்படுத்தவும்"
+ "அமைப்பின் மொழியில்"
"மொழி தேர்ந்தெடுக்கப்படவில்லை"
"பேசப்படும் உரைக்கு மொழி சார்ந்த குரலை அமைக்கிறது"
"எடுத்துக்காட்டைக் கவனிக்கவும்"
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index e591121d4b592..83636dc19beb9 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -143,7 +143,7 @@
"సిస్టమ్ అప్డేట్లు"
"USB టీథరింగ్"
"పోర్టబుల్ హాట్స్పాట్"
- "బ్లూటూత్ టెథెరింగ్"
+ "బ్లూటూత్ టీథరింగ్"
"టీథరింగ్"
"టీథరింగ్ & పోర్టబుల్ హాట్స్పాట్"
"అన్ని కార్యాలయ అనువర్తనాలు"
@@ -376,7 +376,7 @@
"ప్రొటానోమలీ (ఎరుపు-ఆకుపచ్చ రంగు)"
"ట్రైటనోమలీ (నీలం-పసుపు రంగు)"
"రంగు సవరణ"
- "ఈ ఫీచర్ ప్రయోగాత్మకమైనది, పనితీరుపై ప్రభావం చూపవచ్చు."
+ "ఈ లక్షణం ప్రయోగాత్మకమైనది మరియు పనితీరుపై ప్రభావం చూపవచ్చు."
"%1$s ద్వారా భర్తీ చేయబడింది"
"%1$s - %2$s"
"%1$s సమయం మిగిలి ఉంది"
@@ -414,7 +414,7 @@
"నిలిపివేయబడింది"
"అనుమతించినవి"
"అనుమతించబడలేదు"
- "తెలియని యాప్లను ఇన్స్టాల్ చేయడం"
+ "తెలియని యాప్లను ఇన్స్టాల్ చేయండి"
"సెట్టింగ్ల హోమ్"
- "0%"
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 0d3e8de0559d6..5dca4759a6290 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -201,7 +201,7 @@
"Ushbu foydalanuvchi uchun VPN sozlamalari mavjud emas"
"Ushbu foydalanuvchi uchun Modem rejimi sozlamalari mavjud emas"
"Ushbu foydalanuvchi uchun Internetga kirish nuqtasi (APN) sozlamalari mavjud emas"
- "USB orqali nosozliklarni aniqlash"
+ "USB orqali nosozliklarni tuzatish"
"USB orqali kompyuterga ulanganda tuzatish rejimi yoqilsin"
"USB orqali nosozliklarni tuzatishni taqiqlash"
"Xatoliklar hisoboti"
@@ -264,7 +264,7 @@
"Mobil internet har doim yoniq tursin, hatto Wi-Fi yoniq bo‘lsa ham (bir tarmoqdan ikkinchisiga tezroq o‘tish uchun)."
"Modem rejimida apparatli tezlashtirishdan foydalanish (agar mavjud bo‘lsa)"
"USB orqali nosozliklarni tuzatishga ruxsat berilsinmi?"
- "USB orqali nosozliklarni aniqlash faqat dasturlash maqsadlarida yoqiladi. Undan maʼlumotlarni qurilmangiz va kompyuter o‘rtasida ko‘chirish, ilovalarni xabarnomasiz o‘rnatish va jurnal maʼlumotlarini o‘qish uchun foydalaniladi."
+ "USB orqali nosozliklarni tuzatish faqat dasturlash maqsadlarida yoqiladi. Undan ma‘lumotlarni qurilmangiz va kompyuter o‘rtasida ko‘chirish, ilovalarni xabarnomasiz o‘rnatish va jurnal ma‘lumotlarini o‘qish uchun foydalaniladi."
"USB orqali nosozliklarni tuzatishga berilgan ruxsat siz hisobingizga kirgan barcha kompyuterlar uchun bekor qilinsinmi?"
"Dasturlash sozlamalariga ruxsat berilsinmi?"
"Bu sozlamalar faqat dasturlash maqsadlariga mo‘ljallangan. Shuning uchun, ular qurilmangizga va undagi ilovalariga shikast yetkazib, noto‘g‘ri ishlashiga sabab bo‘lishi mumkin."
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 5c06c80a049c4..4e2d6fa76ad0e 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -201,7 +201,7 @@
"Cài đặt VPN không khả dụng cho người dùng này"
"Cài đặt chia sẻ kết nối không khả dụng cho người dùng này"
"Cài đặt tên điểm truy cập không khả dụng cho người dùng này"
- "Gỡ lỗi qua USB"
+ "Gỡ lỗi USB"
"Bật chế độ gỡ lỗi khi kết nối USB"
"Thu hồi ủy quyền gỡ lỗi USB"
"Phím tắt báo cáo lỗi"
@@ -263,7 +263,7 @@
"Cho phép kiểm tra thuộc tính của chế độ xem"
"Luôn bật dữ liệu di động ngay cả khi Wi-Fi đang hoạt động (để chuyển đổi mạng nhanh)."
"Sử dụng tính năng tăng tốc phần cứng khi chia sẻ kết nối nếu có"
- "Cho phép gỡ lỗi qua USB?"
+ "Cho phép gỡ lỗi USB?"
"Gỡ lỗi USB chỉ dành cho mục đích phát triển. Hãy sử dụng tính năng này để sao chép dữ liệu giữa máy tính và thiết bị của bạn, cài đặt ứng dụng trên thiết bị của bạn mà không thông báo và đọc dữ liệu nhật ký."
"Thu hồi quyền truy cập gỡ lỗi USB từ tất cả máy tính mà bạn đã ủy quyền trước đó?"
"Cho phép cài đặt phát triển?"
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index c64130210d370..e85199f9ca0de 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -329,7 +329,7 @@
"顯示背景 ANR"
"為背景應用程式顯示「應用程式無回應」對話方塊"
"顯示通知管道警告"
- "當應用程式未經有效管道發布通知時,在畫面上顯示警告"
+ "當應用程式未經有效管道發佈通知時,在畫面上顯示警告"
"強制允許將應用程式寫入外部儲存空間"
"允許將任何應用程式寫入外部儲存空間 (無論資訊清單值為何)"
"將活動強制設為可調整大小"
diff --git a/packages/Shell/res/values-zh-rTW/strings.xml b/packages/Shell/res/values-zh-rTW/strings.xml
index 96671c8c0175a..fc6397dc20133 100644
--- a/packages/Shell/res/values-zh-rTW/strings.xml
+++ b/packages/Shell/res/values-zh-rTW/strings.xml
@@ -25,9 +25,9 @@
"系統即將在手機上顯示錯誤報告"
"選取即可分享錯誤報告"
"輕觸即可分享錯誤報告"
- "選取即可分享不包含螢幕截圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
- "輕觸即可分享無螢幕截圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
- "輕觸即可分享無螢幕截圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
+ "選取即可分享不包含螢幕擷取畫面的錯誤報告;你也可以等候螢幕畫面擷取完畢"
+ "輕觸即可分享無螢幕擷圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
+ "輕觸即可分享無螢幕擷圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
"錯誤報告的資料來自系統的各種記錄檔,當中可能包含敏感資料 (例如應用程式使用情形和位置資料)。請務必只與你信任的使用者和應用程式分享錯誤報告。"
"不要再顯示"
"錯誤報告"
@@ -35,9 +35,9 @@
"無法在 ZIP 檔案中加入錯誤報告"
"未命名"
"詳細資料"
- "螢幕截圖"
- "已成功拍攝螢幕截圖。"
- "無法拍攝螢幕截圖。"
+ "螢幕擷取畫面"
+ "已成功拍攝螢幕擷取畫面。"
+ "無法拍攝螢幕擷取畫面。"
"錯誤報告 #%d 的詳細資料"
"檔案名稱"
"錯誤標題"
diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml
index 3adc2792ef100..0d88a2074efa9 100644
--- a/packages/SystemUI/res-keyguard/values-cs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml
@@ -41,7 +41,7 @@
"Připojte dobíjecí zařízení."
"Klávesy odemknete stisknutím tlačítka nabídky."
"Síť je blokována"
- "Chybí SIM karta"
+ "Není vložena SIM karta"
"V tabletu není SIM karta."
"V telefonu není SIM karta."
"Vložte SIM kartu."
diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml
index 9c9de22b96d90..22c4c48a7e375 100644
--- a/packages/SystemUI/res-keyguard/values-fa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml
@@ -37,7 +37,7 @@
"%s • درحال شارژ بیسیم"
"%s • درحال شارژ شدن"
"%s • درحال شارژ سریع"
- "%s • آهستهآهسته شارژ میشود"
+ "%s • درحال شارژ آهسته"
"شارژر را وصل کنید."
"برای باز کردن قفل روی «منو» فشار دهید."
"شبکه قفل شد"
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 938cb0dd3b120..9903cc04e97ae 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -401,7 +401,6 @@
"Less urgent notifications below"
"Tap again to open"
"Swipe up to open"
- "Swipe up to try again"
"This device is managed by your organisation"
"This device is managed by %s"
"Swipe from icon for phone"
@@ -545,7 +544,6 @@
"This keeps it in view until you unpin. Touch & hold Home to unpin."
"To unpin this screen, touch & hold Back and Overview buttons"
"To unpin this screen, touch & hold Back and Home buttons"
- "To unpin this screen, swipe up & hold"
"Got it"
"No, thanks"
"Screen pinned"
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 139215aa196f8..d8c862affe08b 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -401,7 +401,6 @@
"Less urgent notifications below"
"Tap again to open"
"Swipe up to open"
- "Swipe up to try again"
"This device is managed by your organization"
"This device is managed by %s"
"Swipe from icon for phone"
@@ -545,7 +544,6 @@
"This keeps it in view until you unpin. Touch & hold Home to unpin."
"To unpin this screen, touch & hold Back and Overview buttons"
"To unpin this screen, touch & hold Back and Home buttons"
- "To unpin this screen, swipe up & hold"
"Got it"
"No thanks"
"Screen pinned"
diff --git a/packages/SystemUI/src/com/android/systemui/CornerHandleView.java b/packages/SystemUI/src/com/android/systemui/CornerHandleView.java
index a94952c5bc19f..6209c2c362063 100644
--- a/packages/SystemUI/src/com/android/systemui/CornerHandleView.java
+++ b/packages/SystemUI/src/com/android/systemui/CornerHandleView.java
@@ -19,6 +19,7 @@ package com.android.systemui;
import android.animation.ArgbEvaluator;
import android.content.Context;
import android.graphics.Canvas;
+import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
@@ -27,6 +28,7 @@ import android.util.DisplayMetrics;
import android.view.ContextThemeWrapper;
import android.view.View;
+import com.android.internal.graphics.ColorUtils;
import com.android.settingslib.Utils;
/**
@@ -107,6 +109,7 @@ public class CornerHandleView extends View {
mPaint.setColor((int) ArgbEvaluator.getInstance().evaluate(darkIntensity,
mLightColor,
mDarkColor));
+ updateShadow();
if (getVisibility() == VISIBLE) {
invalidate();
}
@@ -118,6 +121,21 @@ public class CornerHandleView extends View {
canvas.drawPath(mPath, mPaint);
}
+ private void updateShadow() {
+ if (ColorUtils.calculateLuminance(mPaint.getColor()) > 0.7f) {
+ mPaint.setShadowLayer(/** radius */ 5,/** shadowDx */ 0, /** shadowDy */ -1,
+ /** color */ ColorUtils.setAlphaComponent(/** color */ Color.BLACK,
+ /** alpha */ 102));
+ } else {
+ mPaint.setShadowLayer(/** radius */ 0, /** shadowDx */ 0, /** shadowDy */ 0,
+ /** color */ Color.TRANSPARENT);
+ }
+
+ if (getVisibility() == VISIBLE) {
+ invalidate();
+ }
+ }
+
private static float convertDpToPixel(float dp, Context context) {
return dp * ((float) context.getResources().getDisplayMetrics().densityDpi
/ DisplayMetrics.DENSITY_DEFAULT);
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
index c5064b7e04226..bdc666de4bc71 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
@@ -372,11 +372,18 @@ final class AssistHandleReminderExpBehavior implements BehaviorController {
long currentTimestamp = SystemClock.uptimeMillis();
mLearningTimeElapsed += currentTimestamp - mLastLearningTimestamp;
mLastLearningTimestamp = currentTimestamp;
- Settings.Secure.putLong(
- mContext.getContentResolver(), LEARNING_TIME_ELAPSED_KEY, mLearningTimeElapsed);
mIsLearned =
mLearningCount >= getLearningCount() || mLearningTimeElapsed >= getLearningTimeMs();
+
+ mHandler.post(this::recordLearnTimeElapsed);
+ }
+
+ private void recordLearnTimeElapsed() {
+ if (mContext != null) {
+ Settings.Secure.putLong(
+ mContext.getContentResolver(), LEARNING_TIME_ELAPSED_KEY, mLearningTimeElapsed);
+ }
}
private void resetConsecutiveTaskSwitches() {
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
index aafffe2fe9d3f..ffe3cc04a150d 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
@@ -19,6 +19,7 @@ import android.os.AsyncTask;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
+import android.os.HandlerThread;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
@@ -161,8 +162,10 @@ public class AssistManager implements ConfigurationChangedReceiver {
mAssistUtils = new AssistUtils(context);
mAssistDisclosure = new AssistDisclosure(context, new Handler());
mPhoneStateMonitor = new PhoneStateMonitor(context);
- mHandleController =
- new AssistHandleBehaviorController(context, mAssistUtils, new Handler());
+ final HandlerThread assistHandleThread = new HandlerThread("AssistHandleThread");
+ assistHandleThread.start();
+ mHandleController = new AssistHandleBehaviorController(
+ context, mAssistUtils, assistHandleThread.getThreadHandler());
registerVoiceInteractionSessionListener();
mInterestingConfigChanges = new InterestingConfigChanges(ActivityInfo.CONFIG_ORIENTATION
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
index a9896f51369cc..0383dee4f9c35 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
@@ -22,34 +22,34 @@ import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
+import android.content.ContentResolver;
+import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.graphics.Point;
import android.graphics.drawable.Icon;
import android.hardware.display.DisplayManager;
import android.hardware.display.VirtualDisplay;
import android.media.MediaRecorder;
-import android.media.ThumbnailUtils;
import android.media.projection.MediaProjection;
import android.media.projection.MediaProjectionManager;
import android.net.Uri;
-import android.os.Environment;
import android.os.IBinder;
import android.provider.MediaStore;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.util.Log;
+import android.util.Size;
import android.view.Surface;
import android.widget.Toast;
-import androidx.core.content.FileProvider;
-
import com.android.systemui.R;
import java.io.File;
import java.io.IOException;
+import java.io.OutputStream;
import java.nio.file.Files;
-import java.nio.file.Path;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -76,12 +76,10 @@ public class RecordingService extends Service {
private static final String ACTION_DELETE = "com.android.systemui.screenrecord.DELETE";
private static final int TOTAL_NUM_TRACKS = 1;
- private static final String RECORD_DIR = "Captures"; // TODO: use a translatable string
private static final int VIDEO_BIT_RATE = 6000000;
private static final int VIDEO_FRAME_RATE = 30;
private static final int AUDIO_BIT_RATE = 16;
private static final int AUDIO_SAMPLE_RATE = 44100;
- private static final String FILE_PROVIDER = "com.android.systemui.fileprovider";
private MediaProjectionManager mMediaProjectionManager;
private MediaProjection mMediaProjection;
@@ -117,11 +115,11 @@ public class RecordingService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
- Log.d(TAG, "RecordingService is starting");
if (intent == null) {
return Service.START_NOT_STICKY;
}
String action = intent.getAction();
+ Log.d(TAG, "onStartCommand " + action);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
@@ -157,26 +155,7 @@ public class RecordingService extends Service {
case ACTION_STOP:
stopRecording();
-
- // Move temp file to user directory
- File recordDir = new File(
- Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES),
- RECORD_DIR);
- recordDir.mkdirs();
-
- String fileName = new SimpleDateFormat("'screen-'yyyyMMdd-HHmmss'.mp4'")
- .format(new Date());
- Path path = new File(recordDir, fileName).toPath();
-
- try {
- Files.move(mTempFile.toPath(), path);
- Notification notification = createSaveNotification(path);
- notificationManager.notify(NOTIFICATION_ID, notification);
- } catch (IOException e) {
- e.printStackTrace();
- Toast.makeText(this, R.string.screenrecord_delete_error, Toast.LENGTH_LONG)
- .show();
- }
+ saveRecording(notificationManager);
break;
case ACTION_PAUSE:
@@ -190,8 +169,7 @@ public class RecordingService extends Service {
break;
case ACTION_SHARE:
- File shareFile = new File(intent.getStringExtra(EXTRA_PATH));
- Uri shareUri = FileProvider.getUriForFile(this, FILE_PROVIDER, shareFile);
+ Uri shareUri = Uri.parse(intent.getStringExtra(EXTRA_PATH));
Intent shareIntent = new Intent(Intent.ACTION_SEND)
.setType("video/mp4")
@@ -211,20 +189,18 @@ public class RecordingService extends Service {
// Close quick shade
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
- File file = new File(intent.getStringExtra(EXTRA_PATH));
- if (file.delete()) {
- Toast.makeText(
- this,
- R.string.screenrecord_delete_description,
- Toast.LENGTH_LONG).show();
+ ContentResolver resolver = getContentResolver();
+ Uri uri = Uri.parse(intent.getStringExtra(EXTRA_PATH));
+ resolver.delete(uri, null, null);
- // Remove notification
- notificationManager.cancel(NOTIFICATION_ID);
- } else {
- Log.e(TAG, "Error deleting screen recording!");
- Toast.makeText(this, R.string.screenrecord_delete_error, Toast.LENGTH_LONG)
- .show();
- }
+ Toast.makeText(
+ this,
+ R.string.screenrecord_delete_description,
+ Toast.LENGTH_LONG).show();
+
+ // Remove notification
+ notificationManager.cancel(NOTIFICATION_ID);
+ Log.d(TAG, "Deleted recording " + uri);
break;
}
return Service.START_STICKY;
@@ -295,6 +271,7 @@ public class RecordingService extends Service {
mMediaRecorder.start();
} catch (IOException e) {
+ Log.e(TAG, "Error starting screen recording: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException(e);
}
@@ -352,13 +329,10 @@ public class RecordingService extends Service {
notificationManager.notify(NOTIFICATION_ID, mRecordingNotificationBuilder.build());
}
- private Notification createSaveNotification(Path path) {
- Uri saveUri = FileProvider.getUriForFile(this, FILE_PROVIDER, path.toFile());
- Log.d(TAG, "Screen recording saved to " + path.toString());
-
+ private Notification createSaveNotification(Uri uri) {
Intent viewIntent = new Intent(Intent.ACTION_VIEW)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION)
- .setDataAndType(saveUri, "video/mp4");
+ .setDataAndType(uri, "video/mp4");
Notification.Action shareAction = new Notification.Action.Builder(
Icon.createWithResource(this, R.drawable.ic_android),
@@ -366,7 +340,7 @@ public class RecordingService extends Service {
PendingIntent.getService(
this,
REQUEST_CODE,
- getShareIntent(this, path.toString()),
+ getShareIntent(this, uri.toString()),
PendingIntent.FLAG_UPDATE_CURRENT))
.build();
@@ -376,7 +350,7 @@ public class RecordingService extends Service {
PendingIntent.getService(
this,
REQUEST_CODE,
- getDeleteIntent(this, path.toString()),
+ getDeleteIntent(this, uri.toString()),
PendingIntent.FLAG_UPDATE_CURRENT))
.build();
@@ -394,8 +368,15 @@ public class RecordingService extends Service {
.setAutoCancel(true);
// Add thumbnail if available
- Bitmap thumbnailBitmap = ThumbnailUtils.createVideoThumbnail(path.toString(),
- MediaStore.Video.Thumbnails.MINI_KIND);
+ Bitmap thumbnailBitmap = null;
+ try {
+ ContentResolver resolver = getContentResolver();
+ Size size = Point.convert(MediaStore.ThumbnailConstants.MINI_SIZE);
+ thumbnailBitmap = resolver.loadThumbnail(uri, size, null);
+ } catch (IOException e) {
+ Log.e(TAG, "Error creating thumbnail: " + e.getMessage());
+ e.printStackTrace();
+ }
if (thumbnailBitmap != null) {
Notification.BigPictureStyle pictureStyle = new Notification.BigPictureStyle()
.bigPicture(thumbnailBitmap)
@@ -417,6 +398,38 @@ public class RecordingService extends Service {
stopSelf();
}
+ private void saveRecording(NotificationManager notificationManager) {
+ String fileName = new SimpleDateFormat("'screen-'yyyyMMdd-HHmmss'.mp4'")
+ .format(new Date());
+
+ ContentValues values = new ContentValues();
+ values.put(MediaStore.Video.Media.DISPLAY_NAME, fileName);
+ values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
+ values.put(MediaStore.Video.Media.DATE_ADDED, System.currentTimeMillis());
+ values.put(MediaStore.Video.Media.DATE_TAKEN, System.currentTimeMillis());
+
+ ContentResolver resolver = getContentResolver();
+ Uri collectionUri = MediaStore.Video.Media.getContentUri(
+ MediaStore.VOLUME_EXTERNAL_PRIMARY);
+ Uri itemUri = resolver.insert(collectionUri, values);
+
+ try {
+ // Add to the mediastore
+ OutputStream os = resolver.openOutputStream(itemUri, "w");
+ Files.copy(mTempFile.toPath(), os);
+ os.close();
+
+ Notification notification = createSaveNotification(itemUri);
+ notificationManager.notify(NOTIFICATION_ID, notification);
+
+ mTempFile.delete();
+ } catch (IOException e) {
+ Log.e(TAG, "Error saving screen recording: " + e.getMessage());
+ Toast.makeText(this, R.string.screenrecord_delete_error, Toast.LENGTH_LONG)
+ .show();
+ }
+ }
+
private void setTapsVisible(boolean turnOn) {
int value = turnOn ? 1 : 0;
Settings.System.putInt(getApplicationContext().getContentResolver(),
diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ru/strings.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ru/strings.xml
index 0ff85fe39c99a..dc77981e6c958 100644
--- a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ru/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ru/strings.xml
@@ -17,5 +17,5 @@
- "В правом углу"
+ "Сделать вырез в углу"
diff --git a/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-ru/strings.xml b/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-ru/strings.xml
index 2493da34af1fe..a02eaf7bdc264 100644
--- a/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-ru/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-ru/strings.xml
@@ -17,5 +17,5 @@
- "Сверху и снизу"
+ "Увеличить вырез вдвое"
diff --git a/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ru/strings.xml b/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ru/strings.xml
index 89ac1c3e1b117..1d1656d2862ef 100644
--- a/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ru/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ru/strings.xml
@@ -17,5 +17,5 @@
- "Сверху"
+ "Сделать вырез выше"