Merge #742 into sdk602patch0626 from refs/changes/742/head 744/target/1 745/target/1
author罗正 <1732036298@qq.com>
Tue, 20 Aug 2024 11:14:49 +0000 (11:14 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Tue, 20 Aug 2024 11:14:49 +0000 (11:14 +0000)
Code review from 罗正

* refs/changes/742/head: (17 commits squashed)

  - 1. 优化连接中的gif动画,由原来的20帧修改为现在的20帧

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 修改连接动画为60帧

  - 添加手机同步歌曲到手表,手表音乐列表同步刷新。

  - 音乐列表刷新机制优化在每次切换到音乐列表刷新一次,list高度会根据歌曲数量自适应

  - 显示方式界面添加弧形列表样式,并添加对应资源

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 倒计时界面配置多国语言

  - 1.运动识别弹窗根据弹窗汇总设置显示时长为10s,并添加震动
    2.修复开始按钮的视图Id

  - 倒计时界面优化修改

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 倒计时优化修改

  - 倒计时配置多国语言

  - APPlist应用顺序按照KUMI已经重新排列,放入设置中的四个Slice暂未屏蔽等之后加入后再屏蔽

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 1.音乐播放器在切换通道时添加主动连接和断开手机a2dp功能
    2.播放器添加连接动画,手表连接手机音乐超时时间设置为5s

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

Signed-off-by: 罗正 <1732036298@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/742
36 files changed:
code/sdk/application/wearable/fd230app/nativelauncher/include/ui_resource_string.h
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/countdown/include/MainCountDownPresenter.h
code/sdk/application/wearable/fd230app/nativeui/countdown/include/MainCountDownView.h
code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp
code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownTimeConfigView.cpp
code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownTimeNotNullView.cpp
code/sdk/application/wearable/fd230app/nativeui/countdown/src/MainCountDownView.cpp
code/sdk/application/wearable/fd230app/nativeui/countdown/src/StartCountDownView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp
code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchView.cpp
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchModel.cpp
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordCycleToLimitView.cpp
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordTimeToLimitView.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wearable/service/msg_center/src/notify/motion_recognition_notification.cpp
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/ui_resource_string.h
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang
tools/language_tool/Language_xml/input_list_en.txt
tools/language_tool/Language_xml/input_list_zh.txt
tools/language_tool/Language_xml/language.xlsx
tools/language_tool/Language_xml/language_en.xml
tools/language_tool/Language_xml/language_zh.xml
tools/language_tool/font/en.lang
tools/language_tool/font/ui_resource_string.h
tools/language_tool/font/zh.lang

index fc0599e..974f2c6 100644 (file)
@@ -531,7 +531,20 @@ enum UIResourceTextId : uint16_t {
     STR_IGNORE = 518,\r
     STR_START = 519,\r
     STR_ARC_SCALE_LIST_DISPLAY = 520,\r
-    STR_MAX_ID = 521,\r
+    STR_COUNT_DOWN = 521,\r
+    STR_CUSTOM_TIME = 522,\r
+    STR_QUICK_START = 523,\r
+    STR_1_MIN = 524,\r
+    STR_5_MIN = 525,\r
+    STR_10_MIN = 526,\r
+    STR_30_MIN = 527,\r
+    STR_SET_COUNT_DOWN_NOTE = 528,\r
+    STR_COUNTDOWN_ENDS = 529,\r
+    STR_MAXIMUM_TIME_REACH = 530,\r
+    STR_STOPWATCH_STOP_NOTE = 531,\r
+    STR_TMCHBR = 532,\r
+    STR_MAXIMUM_TIME_REACH_NOTE = 533,\r
+    STR_MAX_ID = 534,\r
 }; // UIResourceTextId\r
 
 enum FontLanguageId : uint8_t {
index a3b1bce..b84bc5e 100644 (file)
@@ -55,11 +55,12 @@ namespace OHOS
 #ifdef A5133_DEMO_CLIENT
         {VIEW_OBU_MESSAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "OBU", STR_OBU_MESSAGE, nullptr},
 #endif
-        {VIEW_MAIN_PHONE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "手机", STR_PHONE, nullptr},
+        {VIEW_MAIN_PHONE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "电话", STR_PHONE, nullptr},
 #if HEART_APPLIST
         {VIEW_HEART_CHART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "心率", STR_HEART_RATE, nullptr},
 #endif
         {VIEW_BLOOD_RESULT, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧", STR_BLOOD_OXYGEN, nullptr},
+        {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr},
         {VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "训练", STR_TRAINING, nullptr},
         {VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "训练记录", STR_TRAINING_RECORD, nullptr},
         {VIEW_GOAL, PNG_APPLIST_GOAL_IMAGE, PNG_APPLIST_GOAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "活动", STR_ACTIVITY, nullptr},
@@ -67,9 +68,9 @@ namespace OHOS
 #ifdef SUPPORT_ALIPAY_SEC
         {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝", STR_ALIPAY, nullptr},
 #endif
-        {VIEW_CALCULATOR, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计算器", STR_CALCULATOR, nullptr},
         {VIEW_MESSAGE, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "消息通知", STR_MESSAGE_NOTIFICATION, nullptr},
         {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "指南针", STR_COMPASS, nullptr},
+        {VIEW_CALCULATOR, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计算器", STR_CALCULATOR, nullptr},
         {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "录音", STR_RECORD, nullptr},
         {VIEW_FLASHLIGHT, PNG_APPLIST_FLASHLIGHT_IMAGE, PNG_APPLIST_FLASHLIGHT_IMAGE, PNG_APPLIST_DEFAULT_IMG, "手电筒", STR_FLASHLIGHT, nullptr},
         {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "天气", STR_WEATHER, nullptr},
@@ -78,19 +79,20 @@ namespace OHOS
         {VIEW_RESPIRATORY_TRAINING, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "呼吸训练", STR_BREATH_TRAINING, nullptr},
         {VIEW_TAKEPHOTOS, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "遥控拍照", STR_REMOTE_SHOOTING, nullptr},
         {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_DEFAULT_IMG, "闹钟", STR_ALARM, nullptr},
-        {VIEW_SOUND_VIBRATION, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "声音", STR_SOUND, nullptr},
         {VIEW_FIND_PHONE, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "查找手机", STR_FIND_PHONE, nullptr},
+        /* ------------------------------- 放入设置中后将会屏蔽 ------------------------------- */
         {VIEW_DNOTDISTURB, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DEFAULT_IMG, "勿扰模式", STR_DO_NOT_DISTURB, nullptr},
         {VIEW_ADD_CARD, PNG_APPLIST_CARDSET_IMAGE, PNG_APPLIST_CARDSET_IMAGE, PNG_APPLIST_DEFAULT_IMG, "卡片管理", STR_CARD_MANAGEMENT, nullptr},
         {VIEW_SET_DIAL_STYLE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "更换表盘", STR_WATCH_FACE, nullptr},
         {VIEW_SAVEELE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "省电模式", STR_POWER_SAVE_MODE, nullptr},
-        {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr},
+        /* -------------------------------------------------------------------------- */
         // {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr},
         {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr},
         // {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr},
         {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr},
 #if 0
 /*屏蔽Slice*/
+        {VIEW_SOUND_VIBRATION, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "声音", STR_SOUND, nullptr},
         {VIEW_PHONEDIR, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "常用联系人", STR_FAVORITE_CONTACTS, nullptr},
         {VIEW_THEME_STYLE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "显示方式", STR_DISPLAY_MODE, nullptr},
         {VIEW_BRIGHTNESSLEVEL, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "亮度调节", STR_BRIGHTNESS_ADJUSTMENT, nullptr},
index d946e7b..c87e4a4 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-07 18:15:53\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-06-07 19:57:56\r
+ * @LastEditTime: 2024-08-20 10:17:35\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/include/MainCountDownPresenter.h\r
  */\r
 #ifndef MAIN_COUNTDOWN_PRESENTER_H\r
@@ -11,7 +11,7 @@
 #include "View.h"\r
 #include "Presenter.h"\r
 #include "MainCountDownView.h"\r
-\r
+#include "ui_resource_string.h"\r
 /*倒计时的主界面*/\r
 namespace OHOS\r
 {\r
index 2eaf8ca..0b43fbb 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-07 18:15:53\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-08 16:15:10\r
+ * @LastEditTime: 2024-08-20 10:48:28\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/include/MainCountDownView.h\r
  */\r
 #ifndef MAIN_COUNTDOWN_VIEW_H\r
@@ -67,7 +67,7 @@ namespace OHOS
     private:\r
         void MainCountDownViewInit(void);\r
         void ClearAll(void);\r
-        UILabelButtonExt *SetUILabelButton(int x, int y, int w, int h, const char *id, const char *text);\r
+        UILabelButtonExt *SetUILabelButton(int x, int y, int w, int h, const char *id, const char *text,int textId);\r
         UIViewGroup *group = nullptr;\r
         UIScrollView *scrollView[COUNTDOWN_MAX_VIEW]{nullptr};\r
         UILabelExt *Title{nullptr};\r
index b93a47f..a8a031f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-07 18:15:53\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-09 15:38:14\r
+ * @LastEditTime: 2024-08-20 15:16:40\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp\r
  */\r
 #include "countdown/include/CountDownModel.h"\r
@@ -12,8 +12,8 @@
 #include "wearable_log.h"\r
 #include "countdown/include/MainCountDownView.h"\r
 #include <cmsis_os.h>\r
-#include "../../../../../../../drivers/peripheral/config/include/ConfigModel.h"\r
-\r
+#include "ConfigModel.h"\r
+#include "ui_resource_string.h"\r
 namespace OHOS\r
 {\r
     /* -------------------------------------------------------------------------- */\r
@@ -354,7 +354,7 @@ namespace OHOS
     static void CountDown_TimerCallbackProc(int data)\r
     {\r
         CountDownModel::g_CountDownTimes--; // 每次回调减少1秒\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_CountDownTimes:%d\n", CountDownModel::g_CountDownTimes);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_CountDownTimes:%d\n", CountDownModel::g_CountDownTimes);\r
 \r
         if (MainCountDownView::GetInstance() == nullptr)\r
         {\r
@@ -386,7 +386,8 @@ namespace OHOS
             MainCountDownView::GetInstance()->GetStartCountDownView()->GetPlayOrPauseToggleButton()->SetVisible(false);\r
             MainCountDownView::GetInstance()->GetStartCountDownView()->GetRepeatButton()->SetVisible(true);\r
             CountDownModel::GetInstance()->CountDown_StopTimer(); // 停止定时器\r
-            MainCountDownView::GetInstance()->GetStartCountDownView()->GetShowCountDownTimelabel()->SetText("倒计时结束");\r
+            MainCountDownView::GetInstance()->GetStartCountDownView()->GetShowCountDownTimelabel()->SetTextId(STR_COUNTDOWN_ENDS);//倒计时结束\r
+            MainCountDownView::GetInstance()->GetStartCountDownView()->GetShowCountDownTimelabel()->ForceResetText();\r
             // 进行倒计时结束时的额外操作,比如播放声音、显示通知等\r
             // CountDownModel::GetInstance()->StartRingtonePlayback();\r
             CountDownModel::GetInstance()->RequestStartRingtone();\r
index da9348c..3863c79 100644 (file)
@@ -91,13 +91,13 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownTimeConfigView::Title is new fail!!");
                 return nullptr;
             }
-            Title->SetPosition(83, 52, 300, 40);
+            Title->SetPosition(83, 50, 300, 35);
             Title->SetStyle(STYLE_TEXT_FONT, 30);
             Title->SetStyle(STYLE_LINE_HEIGHT, 35);
-            Title->SetText("倒计时");
-            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+            Title->SetTextId(STR_COUNT_DOWN);//倒计时
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
             Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-            Title->SetRollSpeed(40);
+            Title->SetRollSpeed(70);
             Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
             /* -------------------------------------------------------------------------- */
             timePicker = new UITimePicker();
index dbb2cd9..f2d4dc9 100644 (file)
@@ -73,13 +73,13 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownTimeNotNullView::Title is new fail!!");\r
                 return nullptr;\r
             }\r
-            Title->SetPosition(83, 52, 300, 40);\r
+            Title->SetPosition(83, 50, 300, 35);\r
             Title->SetStyle(STYLE_TEXT_FONT, 30);\r
             Title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            Title->SetText("倒计时");\r
-            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            Title->SetTextId(STR_COUNT_DOWN); // 倒计时\r
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            Title->SetRollSpeed(40);\r
+            Title->SetRollSpeed(70);\r
             Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
             Attention = new UIImageView();\r
@@ -98,27 +98,34 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownTimeNotNullView::AttentionLabel is new fail!!");\r
                 return nullptr;\r
             }\r
-            AttentionLabel->SetPosition(33, 253, 400, 40);\r
+            AttentionLabel->SetPosition(53, 253, 360, 35);\r
             AttentionLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
             AttentionLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            AttentionLabel->SetText("请先设置好倒计时间");\r
-            AttentionLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            AttentionLabel->SetTextId(STR_SET_COUNT_DOWN_NOTE); // 请先设置好倒计时间\r
+            AttentionLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             AttentionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            AttentionLabel->SetRollSpeed(40);\r
+            AttentionLabel->SetRollSpeed(70);\r
             AttentionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
+            button = new UILabelButtonExt();\r
             if (button == nullptr)\r
             {\r
-                button = new UILabelButtonExt();\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownTimeNotNullView::button is new fail!!");\r
+                return nullptr;\r
             }\r
             button->SetPosition(0, 366, 466, 100);\r
             button->SetViewId(COUNTDOWNTIMENOTNULLVIEWRETURNBUTTON);\r
             button->SetImageSrc(PNG_466x100BUTTON_IMAGE, PNG_466x100BUTTON_IMAGE);\r
-            button->SetText("知道了");\r
+            button->SetTextId(STR_KONW); // 知道了\r
             button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             button->SetStyle(STYLE_LINE_HEIGHT, 35);\r
             button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
             UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(MainCountDownPresenter::GetInstance());\r
+            if (buttonClick == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownTimeNotNullView::buttonClick is new fail!!");\r
+                return nullptr;\r
+            }\r
             button->SetOnClickListener(buttonClick);\r
             /* ----------------------------------- Add ---------------------------------- */\r
             scrollView->Add(Title);\r
index 2680cba..6a7674a 100644 (file)
@@ -142,13 +142,13 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title is new fail!!");\r
                 return;\r
             }\r
-            Title->SetPosition(83, 55, 300, 40);\r
+            Title->SetPosition(83, 50, 300, 35);\r
             Title->SetStyle(STYLE_TEXT_FONT, 30);\r
             Title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            Title->SetText("倒计时");\r
-            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            Title->SetTextId(STR_COUNT_DOWN); // 倒计时\r
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            Title->SetRollSpeed(40);\r
+            Title->SetRollSpeed(70);\r
             Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------- CUSTOM_COUNTDOWN ------------------------- */\r
             CUSTOM_COUNTDOWN = new UILabelButtonExt();\r
@@ -161,7 +161,7 @@ namespace OHOS
             CUSTOM_COUNTDOWN->SetViewId(COUNTDOWN_LABELBUTTON_VIEWID);\r
             CUSTOM_COUNTDOWN->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffa800);\r
             CUSTOM_COUNTDOWN->SetStyle(STYLE_BORDER_RADIUS, 100);\r
-            CUSTOM_COUNTDOWN->SetText("自定义时间");\r
+            CUSTOM_COUNTDOWN->SetTextId(STR_CUSTOM_TIME); // 自定义时间\r
             CUSTOM_COUNTDOWN->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             CUSTOM_COUNTDOWN->SetStyle(STYLE_LINE_HEIGHT, 35);\r
             CUSTOM_COUNTDOWN->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffa800, UIButton::PRESSED);\r
@@ -172,37 +172,37 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QuickStart is new fail!!");\r
                 return;\r
             }\r
-            QuickStart->SetPosition(83, 270, 300, 40);\r
+            QuickStart->SetPosition(83, 270, 300, 35);\r
             QuickStart->SetStyle(STYLE_TEXT_FONT, 30);\r
             QuickStart->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            QuickStart->SetText("快速开始");\r
-            QuickStart->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            QuickStart->SetTextId(STR_QUICK_START);\r
+            QuickStart->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             QuickStart->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            QuickStart->SetRollSpeed(40);\r
+            QuickStart->SetRollSpeed(70);\r
             QuickStart->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* ----------------------- COUNTDOWN_ONE_MINUTE_BUTTON ---------------------- */\r
-            COUNTDOWN_ONE_MINUTE_BUTTON = SetUILabelButton(43, 345, 180, 150, COUNTDOWN_ONE_MINUTE_BUTTON_VIEWID, "1分钟");\r
+            COUNTDOWN_ONE_MINUTE_BUTTON = SetUILabelButton(43, 345, 180, 150, COUNTDOWN_ONE_MINUTE_BUTTON_VIEWID, "1分钟", STR_1_MIN);\r
             if (COUNTDOWN_ONE_MINUTE_BUTTON == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_ONE_MINUTE_BUTTON is new fail!!");\r
                 return;\r
             }\r
             /* ---------------------- COUNTDOWN_FIVE_MINUTE_BUTTON ---------------------- */\r
-            COUNTDOWN_FIVE_MINUTE_BUTTON = SetUILabelButton(243, 345, 180, 150, COUNTDOWN_FIVE_MINUTE_BUTTON_VIEWID, "5分钟");\r
+            COUNTDOWN_FIVE_MINUTE_BUTTON = SetUILabelButton(243, 345, 180, 150, COUNTDOWN_FIVE_MINUTE_BUTTON_VIEWID, "5分钟", STR_5_MIN);\r
             if (COUNTDOWN_FIVE_MINUTE_BUTTON == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_FIVE_MINUTE_BUTTON is new fail!!");\r
                 return;\r
             }\r
             /* ----------------------- COUNTDOWN_TEN_MINUTE_BUTTON ---------------------- */\r
-            COUNTDOWN_TEN_MINUTE_BUTTON = SetUILabelButton(43, 515, 180, 150, COUNTDOWN_TEN_MINUTE_BUTTON_VIEWID, "10分钟");\r
+            COUNTDOWN_TEN_MINUTE_BUTTON = SetUILabelButton(43, 515, 180, 150, COUNTDOWN_TEN_MINUTE_BUTTON_VIEWID, "10分钟", STR_10_MIN);\r
             if (COUNTDOWN_TEN_MINUTE_BUTTON == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_TEN_MINUTE_BUTTON is new fail!!");\r
                 return;\r
             }\r
             /* --------------------- COUNTDOWN_THIRTY_MINUTE_BUTTON --------------------- */\r
-            COUNTDOWN_THIRTY_MINUTE_BUTTON = SetUILabelButton(243, 515, 180, 150, COUNTDOWN_THIRTY_MINUTE_BUTTON_VIEWID, "30分钟");\r
+            COUNTDOWN_THIRTY_MINUTE_BUTTON = SetUILabelButton(243, 515, 180, 150, COUNTDOWN_THIRTY_MINUTE_BUTTON_VIEWID, "30分钟", STR_30_MIN);\r
             if (COUNTDOWN_THIRTY_MINUTE_BUTTON == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_THIRTY_MINUTE_BUTTON is new fail!!");\r
@@ -218,7 +218,7 @@ namespace OHOS
         }\r
     }\r
 \r
-    UILabelButtonExt *MainCountDownView::SetUILabelButton(int x, int y, int w, int h, const char *id, const char *text)\r
+    UILabelButtonExt *MainCountDownView::SetUILabelButton(int x, int y, int w, int h, const char *id, const char *text, int textId)\r
     {\r
         UILabelButtonExt *button = new UILabelButtonExt();\r
         if (button == nullptr)\r
@@ -232,7 +232,8 @@ namespace OHOS
         button->SetImagePosition(72, 30);\r
         ImageInfo *img = ImageCacheManager::GetInstance().LoadSingleRes(COUNTDOWM_TIMER_ICON);\r
         button->SetImageSrc(img, img);\r
-        button->SetText(text);\r
+        // button->SetText(text);\r
+        button->SetTextId(textId);\r
         button->SetAlign(TEXT_ALIGNMENT_LEFT);\r
         button->SetLabelPosition(51, 61);\r
         button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
index e93ec12..d5b3083 100644 (file)
@@ -95,13 +95,13 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownTimeNotNullView::Title is  is new fail!!");\r
                 return nullptr;\r
             }\r
-            Title->SetPosition(83, 52, 300, 40);\r
+            Title->SetPosition(83, 50, 300, 35);\r
             Title->SetStyle(STYLE_TEXT_FONT, 30);\r
             Title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            Title->SetText("倒计时");\r
-            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            Title->SetTextId(STR_COUNT_DOWN); // 倒计时\r
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            Title->SetRollSpeed(40);\r
+            Title->SetRollSpeed(70);\r
             Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
             showCountDownTimelabel = new UILabelExt();\r
@@ -114,9 +114,10 @@ namespace OHOS
             showCountDownTimelabel->SetStyle(STYLE_TEXT_FONT, 80);\r
             showCountDownTimelabel->SetStyle(STYLE_LINE_HEIGHT, 94);\r
             showCountDownTimelabel->SetText(CountDownModel::GetInstance()->GetCountDownTime().c_str());\r
-            showCountDownTimelabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            showCountDownTimelabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             showCountDownTimelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
             showCountDownTimelabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 80);\r
+            showCountDownTimelabel->SetRollSpeed(70);\r
             /* -------------------------------------------------------------------------- */\r
             vectorImage = new UIImageView();\r
             if (vectorImage == nullptr)\r
@@ -142,9 +143,11 @@ namespace OHOS
             showTheRingTime->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
             showTheRingTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);\r
             /* -------------------------------------------------------------------------- */\r
+            play_or_pause_toggleButton = new UIToggleButton();\r
             if (play_or_pause_toggleButton == nullptr)\r
             {\r
-                play_or_pause_toggleButton = new UIToggleButton();\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "play_or_pause_toggleButton  is new fail!!");\r
+                return nullptr;\r
             }\r
             play_or_pause_toggleButton->SetPosition(248, 321, 100, 100);\r
             play_or_pause_toggleButton->SetViewId(PlayOrPauseToggleButton_ViewID);\r
@@ -156,13 +159,13 @@ namespace OHOS
             play_or_pause_toggleButton->SetVisible(true);\r
 \r
             /* -------------------------------------------------------------------------- */\r
-            // Add Button to App\r
+            endbutton = new UIButton();\r
             if (endbutton == nullptr)\r
             {\r
-                endbutton = new UIButton();\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "endbutton  is new fail!!");\r
+                return nullptr;\r
             }\r
-            endbutton->SetPosition(118, 321);\r
-            endbutton->Resize(100, 100);\r
+            endbutton->SetPosition(118, 321, 100, 100);\r
             endbutton->SetViewId(STARTCOUNTDOWNVIEWRETURNBUTTON);\r
             endbutton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
             endbutton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
@@ -171,15 +174,19 @@ namespace OHOS
             endbutton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffa800, UIButton::PRESSED);\r
             endbutton->SetStyleForState(STYLE_BORDER_RADIUS, 100, UIButton::PRESSED);\r
             UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(MainCountDownPresenter::GetInstance());\r
+            if (buttonClick == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "buttonClick  is new fail!!");\r
+                return nullptr;\r
+            }\r
             endbutton->SetOnClickListener(buttonClick);\r
-            /* ----------------------------------- Add ---------------------------------- */\r
-\r
+            RepeatButton = new UIButton();\r
             if (nullptr == RepeatButton)\r
             {\r
-                RepeatButton = new UIButton();\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "endbutton  is new fail!!");\r
+                return nullptr;\r
             }\r
-            RepeatButton->SetPosition(248, 321);\r
-            RepeatButton->Resize(100, 100);\r
+            RepeatButton->SetPosition(248, 321, 100, 100);\r
             RepeatButton->SetViewId(RepeatButtonViewID);\r
             RepeatButton->SetStyle(STYLE_BACKGROUND_COLOR, 0x00);\r
             RepeatButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
@@ -187,10 +194,11 @@ namespace OHOS
             RepeatButton->SetImageSrc(RepeatButtonImagePath, RepeatButtonImagePath);\r
             RepeatButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffa800, UIButton::PRESSED);\r
             RepeatButton->SetStyleForState(STYLE_BORDER_RADIUS, 100, UIButton::PRESSED);\r
-            UIView::OnClickListener * RepeatButtonClick = static_cast<UIView::OnClickListener *>(MainCountDownPresenter::GetInstance());\r
+            UIView::OnClickListener *RepeatButtonClick = static_cast<UIView::OnClickListener *>(MainCountDownPresenter::GetInstance());\r
             RepeatButton->SetOnClickListener(RepeatButtonClick);\r
             RepeatButton->SetVisible(false);\r
 \r
+            /* ----------------------------------- Add ---------------------------------- */\r
             scrollView->Add(Title);\r
             scrollView->Add(showCountDownTimelabel);\r
             scrollView->Add(vectorImage);\r
@@ -220,7 +228,7 @@ namespace OHOS
         return play_or_pause_toggleButton;\r
     }\r
 \r
-    UIButton * StartCountDownView::GetRepeatButton(void)\r
+    UIButton *StartCountDownView::GetRepeatButton(void)\r
     {\r
         return RepeatButton;\r
     }\r
index 37be7a2..27b1d98 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-05 15:20:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-13 17:11:32
+ * @LastEditTime: 2024-08-20 17:18:32
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
  */
 
@@ -101,6 +101,8 @@ public:
     void SetMusicSource(bool value);
     void UpdateMusicPlayerList(void);
     bool GetCurrentMusicIsPlaying(void);
+    void PlayerMusic_StartTimer(uint32_t interval = 1000);
+    void PlayerMusic_StopTimer(void);
 private:
     bool musicSourceFlag{false};//音乐来源标志:false:默认为手表音乐,true:手机音乐
 private:
index 519943b..31b761e 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-13 16:10:15\r
+ * @LastEditTime: 2024-08-20 17:57:54\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h\r
  */\r
 \r
@@ -240,7 +240,6 @@ public:
     void OnClickSuccBack(void);\r
     void OnClickConnFailBack(void);\r
     void OnClickFailBack(void);\r
-    void UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus);\r
     void SetPlaybackProgress(int64_t value);\r
     void SetPlayerState(bool value);\r
     void PlayerbackReset(void);\r
index d8b5f97..5e1304d 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-14 11:26:39\r
+ * @LastEditTime: 2024-08-20 17:39:13\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
  */\r
 \r
@@ -34,6 +34,7 @@
 #include "player/include/MusicPlayerSourceView.h"\r
 #include "player/include/MusicPlayerBluetoothDisConView.h"\r
 #include "player/include/MusicPlayerBTConnectFailedView.h"\r
+#include "aivoice/include/AiVoiceConnectingView.h"\r
 namespace OHOS\r
 {\r
 #define PLAY_PROGRESS_MIN 0\r
@@ -98,7 +99,7 @@ namespace OHOS
         UICircleProgress *GetPlaybackProgress(void);\r
         UICheckBox::UICheckBoxState GetPlayerButtonState(void);\r
 \r
-        void UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus);\r
+        void UpdatePlayerView(void);\r
         void UpdateMusicListStatus(void);\r
         void OnClickBackKeyToMainMusicPlayerView(void);\r
 \r
@@ -152,6 +153,7 @@ namespace OHOS
         UIViewGroup *musicListGroupView{nullptr};                                // 音乐列表视图\r
         MusicPlayerBluetoothDisConView *musicPlayerBluetoothDisConView{nullptr}; // 蓝牙未连接视图\r
         MusicPlayerBTConnectFailedView *musicPlayerBTConnectFailedView{nullptr}; // 蓝牙连接失败视图\r
+        AiVoiceConnectingView *musicPlayerConnectingView{nullptr};               // 连接动画\r
 \r
     private:\r
         UIView::OnClickListener *clickListener{nullptr};\r
index bb47b64..1bef02a 100644 (file)
@@ -67,15 +67,16 @@ namespace OHOS
             // 1.a2dp未连接,向手机发起a2dp连接\r
             // 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市\r
 \r
-            playersPresenter->UpdatePlayerView(PlayersModel::GetInstance()->GetMusicSource(), phonebluetoothcon && a2dp);\r
-\r
             if (!phonebluetoothcon)\r
             {\r
                 playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW);\r
             }\r
-            else if (phonebluetoothcon && !a2dp)\r
+            else if (phonebluetoothcon && !a2dp) // 如果手机蓝牙已连接但手表与手机的a2dp未连接手表主动去连接a2dp\r
             {\r
-                playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUSIC_BT_CONNECTFAILED_VIEW);\r
+                /* -------------------------------------------------------------------------- */\r
+                uapi_a2dp_snk_connect(); // 切换通道主动连接atdp\r
+                /* -------------------------------------------------------------------------- */\r
+                playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUISC_CONNECTING);\r
             }\r
             else if (phonebluetoothcon && a2dp)\r
             {\r
@@ -87,8 +88,12 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick watchLableButton");\r
             PlayersModel::GetInstance()->SetMusicSource(false);\r
             UpdateBluetoothHeadSetViewIsVisible();\r
-\r
-            playersPresenter->UpdatePlayerView(PlayersModel::GetInstance()->GetMusicSource(), phonebluetoothcon && a2dp);\r
+            /* -------------------------------------------------------------------------- */\r
+            if (a2dp)\r
+            {\r
+                uapi_a2dp_snk_disconnect(); // 切换通道主动断开atdp\r
+            }\r
+            /* -------------------------------------------------------------------------- */\r
         }\r
         else if (button == bluetoothHeadsetLableButton)\r
         {\r
index 3e2aa2c..e2dd531 100644 (file)
@@ -15,6 +15,9 @@
 #include "bluetooth/include/BluetoothModel.h"
 #include <unistd.h>
 #include <sys/stat.h>
+#include "cmsis_os.h"
+#include <cmsis_os2.h>
+#include <service/graphic_service.h>
 namespace OHOS {
 
 static constexpr int VOLUME_MAXIMUM = 100;
@@ -801,6 +804,92 @@ bool PlayersModel::GetCurrentMusicIsPlaying(void)
     }
     return false;
 }
+    
+    /* -------------------------------------------------------------------------- */
+    static osTimerId_t g_timer = NULL;
+    static int g_PlayerTimes = 5;
+
+    static void PlayerMusic_TimerCallbackProc(int data)
+    {
+        g_PlayerTimes--;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_PlayerTimes = %d",g_PlayerTimes);
+        PlayersView *playersView = PlayersView::GetInstance();
+        if (playersView == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView nullptr err");
+            return;
+        }
+        if(g_PlayerTimes < 0) /*5秒超时*/
+        {
+            playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MUSIC_BT_CONNECTFAILED_VIEW);
+        }
+        else
+        {
+            bool a2dp = uapi_a2dp_snk_get_device_connect_state();// 获取a2dp连接状态
+            if(a2dp)
+            {
+                playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MAIN_MUSICPLAYER_VIEW);
+            }
+        }
+        return;
+    }
+    static void PlayerMusic_TimerCallback(int data)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(PlayerMusic_TimerCallbackProc, data));
+    }
+
+    void PlayersModel::PlayerMusic_StartTimer(uint32_t interval)
+    {
+        /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */
+        if (g_timer != NULL)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersModel::StopWatch_StartTimer Timer already exists!!");
+            return;
+        }
+
+        /* --------------------------------- 2.创建定时器 -------------------------------- */
+        g_timer = osTimerNew((osTimerFunc_t)PlayerMusic_TimerCallback, osTimerPeriodic, NULL, NULL);
+        // 检查定时器创建是否成功
+        if (g_timer == NULL)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersModel::StopWatch_StartTimer Timer create failed!!");
+            return;
+        }
+
+        /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 ---------------------------- */
+        int tick = osMs2Tick(interval);
+
+        /* --------------------------------- 4.启动定时器 -------------------------------- */
+        // g_timerStartTimestamp = GetCurrentTimestamp(); // 假设GetCurrentTimestamp()是获取当前时间戳的函数
+        osStatus_t ret = osTimerStart(g_timer, tick);
+        /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 NULL -------------------- */
+        if (ret != osOK)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[StopWatch_StartTimer]osTimerDelete failed, ret = %lx!!", ret);
+            if (g_timer != NULL)
+            {
+                ret = osTimerDelete(g_timer);
+            }
+            g_timer = NULL;
+            return;
+        }
+        return;
+    }
+
+    void PlayersModel::PlayerMusic_StopTimer(void)
+    {
+        // 检查定时器是否存在
+        if (g_timer != NULL)
+        {
+            // 删除定时器并置为 NULL
+            osStatus_t ret = osTimerDelete(g_timer);
+            if (ret != osOK)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
+            }
+            g_timer = NULL;
+            g_PlayerTimes = 5;
+        }
+    }
 }
 
 #ifdef __cplusplus
index 858364f..27beed9 100644 (file)
@@ -1474,16 +1474,6 @@ bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event)
     return false;\r
 }\r
 \r
-void PlayersPresenter::UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus)\r
-{\r
-    PlayersView *playersView = PlayersView::GetInstance();\r
-    if (playersView == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
-        return;\r
-    }\r
-    playersView->UpdatePlayerView(musicSourceType,phoneMusicConnectStatus);\r
-}\r
-\r
 void PlayersPresenter::SetPlaybackProgress(int64_t value)\r
 {\r
     PlayersView *playersView = PlayersView::GetInstance();\r
index 204cce8..f981c7d 100644 (file)
@@ -488,6 +488,12 @@ namespace OHOS
             delete musicPlayerBTConnectFailedView;\r
             musicPlayerBTConnectFailedView = nullptr;\r
         }\r
+        if (musicPlayerConnectingView != nullptr)\r
+        {\r
+            PlayersModel::GetInstance()->PlayerMusic_StopTimer();\r
+            delete musicPlayerConnectingView;\r
+            musicPlayerConnectingView = nullptr;\r
+        }\r
 \r
         for (int i = MAIN_MUSICPLAYER_VIEW; i < MUSICPLAYERJUMPVIEWID_MAX; i++)\r
         {\r
@@ -922,11 +928,15 @@ namespace OHOS
     }\r
 \r
     /*刷新播放器界面的组件状态*/\r
-    void PlayersView::UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus)\r
+    void PlayersView::UpdatePlayerView(void)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdatePlayerView");\r
         // 1.a2dp未连接,向手机发起a2dp连接\r
+        bool phonebluetoothcon = SettingModel::GetInstance().GetPhoneConnectStatus(); // 获取手机连接状态\r
+        bool a2dp = uapi_a2dp_snk_get_device_connect_state();                         // 获取a2dp连接状态\r
 \r
+        bool phoneMusicConnectStatus = phonebluetoothcon && a2dp;\r
+        bool musicSourceType = PlayersModel::GetInstance()->GetMusicSource();\r
         // 2.\r
         ImageInfo *image;\r
         if (musicSourceType)\r
@@ -989,9 +999,7 @@ namespace OHOS
             return false;\r
         }\r
         /* -------------------------------------------------------------------------- */\r
-        bool phonebluetoothcon = SettingModel::GetInstance().GetPhoneConnectStatus(); // 获取手机连接状态\r
-        bool a2dp = uapi_a2dp_snk_get_device_connect_state();                         // 获取a2dp连接状态\r
-        UpdatePlayerView(PlayersModel::GetInstance()->GetMusicSource(), phonebluetoothcon && a2dp);\r
+        UpdatePlayerView();\r
         /* -------------------------------------------------------------------------- */\r
 \r
         PlayersListGroup::GetInstance()->SetUpListCase();\r
@@ -1238,6 +1246,7 @@ namespace OHOS
         {PlayersView::MUSIC_DELETE_VIEW, &PlayersView::ChangeToMusicDeleteView},\r
         {PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW, &PlayersView::ChangeToMusicBluetoothDisConnectView},\r
         {PlayersView::MUSIC_BT_CONNECTFAILED_VIEW, &PlayersView::ChangeToMusicBluetoothConnectFailedView},\r
+        {PlayersView::MUISC_CONNECTING, &PlayersView::ChangeToMusicConnectingView},\r
     };\r
 \r
     /*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/\r
@@ -1278,10 +1287,37 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    static const short PlayerDestroyMapper[] = {\r
+        PlayersView::MUISC_CONNECTING,\r
+    };\r
+\r
     /*删除临时视图*/\r
     void PlayersView::DestroyTempView(int16_t hideView)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::DestroyTempView");\r
+        int viewSize = sizeof(PlayerDestroyMapper) / sizeof(PlayerDestroyMapper[0]);\r
+        for (int i = 0; i < viewSize; i++)\r
+        {\r
+            if (hideView == PlayerDestroyMapper[i])\r
+            {\r
+                Remove(group[hideView]);\r
+                group[hideView] = nullptr;\r
+                break;\r
+            }\r
+        }\r
+        switch (hideView)\r
+        {\r
+        case PlayersView::MUISC_CONNECTING:\r
+            PlayersModel::GetInstance()->PlayerMusic_StopTimer();\r
+            if (musicPlayerConnectingView)\r
+            {\r
+                delete musicPlayerConnectingView;\r
+                musicPlayerConnectingView = nullptr;\r
+            }\r
+            break;\r
+        default:\r
+            break;\r
+        }\r
     }\r
 \r
     /*视图切换*/\r
@@ -1313,6 +1349,7 @@ namespace OHOS
         {\r
             Add(group[thisView]);\r
         }\r
+        UpdatePlayerView();\r
         return true;\r
     }\r
 \r
@@ -1372,7 +1409,7 @@ namespace OHOS
             group[thisView] = groupview;\r
             Add(group[thisView]);\r
         }\r
-        UpdateMusicListStatus();/*每次切换到音乐列表都将更新一次列表*/\r
+        UpdateMusicListStatus(); /*每次切换到音乐列表都将更新一次列表*/\r
         return true;\r
     }\r
 \r
@@ -1448,27 +1485,28 @@ namespace OHOS
         return true;\r
     }\r
 \r
-    /*å\88\87æ\8d¢å\88°è\93\9dç\89\99æ\9cªè¿\9eæ\8e¥视图*/\r
+    /*å\88\87æ\8d¢å\88°è¿\9eæ\8e¥å\8a¨ç\94»视图*/\r
     bool PlayersView::ChangeToMusicConnectingView(int16_t thisView)\r
     {\r
-        //  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicBluetoothConnectFailedView");\r
-        // if (group[thisView] == nullptr)\r
-        // {\r
-        //     musicPlayerBTConnectFailedView = new MusicPlayerBTConnectFailedView();\r
-        //     if (musicPlayerBTConnectFailedView == nullptr)\r
-        //     {\r
-        //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail");\r
-        //         return false;\r
-        //     }\r
-        //     UIViewGroup *groupview = musicPlayerBTConnectFailedView->CreateMusicPlayerBTConnectFailedView();\r
-        //     if (groupview == nullptr)\r
-        //     {\r
-        //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
-        //         return false;\r
-        //     }\r
-        //     group[thisView] = groupview;\r
-        //     Add(group[thisView]);\r
-        // }\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicConnectingView");\r
+        if (group[thisView] == nullptr)\r
+        {\r
+            musicPlayerConnectingView = new AiVoiceConnectingView();\r
+            if (musicPlayerConnectingView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail");\r
+                return false;\r
+            }\r
+            UIViewGroup *groupview = musicPlayerConnectingView->CreateAiVoiceConnectingView(1);\r
+            if (groupview == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            group[thisView] = groupview;\r
+            Add(group[thisView]);\r
+        }\r
+        PlayersModel::GetInstance()->PlayerMusic_StartTimer();\r
         return true;\r
     }\r
 }\r
index f8fc69b..2dfd7d3 100644 (file)
@@ -2,13 +2,14 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-02-18 09:09:13
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-22 10:51:12
+ * @LastEditTime: 2024-08-20 17:42:37
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingModel.cpp
  */
 #include "settings/include/SettingModel.h"
 #include "main/include/PullUpDownView.h"
 #include "ui_resource_string.h"
 #include "classicbluetooth/include/BluetoothServiceOptionsView.h"
+#include "player/include/PlayersView.h"
 namespace OHOS
 {
     SettingModel::SettingModel() {}
@@ -99,5 +100,9 @@ namespace OHOS
         {
             BluetoothServiceOptionsView::GetInstance()->Button_UPdata();
         }
+        if(PlayersView::GetInstance())
+        {
+            PlayersView::GetInstance()->UpdatePlayerView();
+        }
     }
 }
index f866b60..dc906ba 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-04 15:13:51\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-06-07 17:07:38\r
+ * @LastEditTime: 2024-08-20 11:25:11\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h\r
  */\r
 #ifndef MAIN_STOPWATCH_PRESENTER_H\r
@@ -12,6 +12,7 @@
 #include "View.h"\r
 #include "MainStopWatchView.h"\r
 #include <string>\r
+#include "ui_resource_string.h"\r
 /*秒表主视图*/\r
 namespace OHOS\r
 {\r
index d9284b7..4c32e7d 100644 (file)
@@ -272,7 +272,7 @@ namespace OHOS
         {\r
             StopWatchModel::GetInstance()->StopWatch_PauseTimer(); // 暂停定时器\r
             m_button->SetViewId(ResetOrMarkButton_RESET2_VIEWID);\r
-            m_button->SetImageSrc(ResetOrMarkButtonImg_Reset2, nullptr);\r
+            m_button->SetImageSrc(ResetOrMarkButtonImg_Reset2, ResetOrMarkButtonImg_Reset2);\r
             m_button->Invalidate();\r
         }\r
         return true;\r
index 165ae02..cfac70d 100644 (file)
@@ -30,78 +30,83 @@ namespace OHOS
 \r
     void MainStopWatchView::ClearAll()\r
     {\r
-        group->RemoveAll();\r
-        scrollView[MAIN_STOPWATCH]->RemoveAll();\r
-\r
-        if (stopWatchlabel != nullptr)\r
+        if (group != nullptr)\r
         {\r
-            delete stopWatchlabel;\r
-            stopWatchlabel = nullptr;\r
-        }\r
+            group->RemoveAll();\r
+            scrollView[MAIN_STOPWATCH]->RemoveAll();\r
 \r
-        if (showTimelabel != nullptr)\r
-        {\r
-            delete showTimelabel;\r
-            showTimelabel = nullptr;\r
-        }\r
+            if (stopWatchlabel != nullptr)\r
+            {\r
+                delete stopWatchlabel;\r
+                stopWatchlabel = nullptr;\r
+            }\r
 \r
-        if (PlayOrPausecheckBox != nullptr)\r
-        {\r
-            delete PlayOrPausecheckBox;\r
-            PlayOrPausecheckBox = nullptr;\r
-        }\r
+            if (showTimelabel != nullptr)\r
+            {\r
+                delete showTimelabel;\r
+                showTimelabel = nullptr;\r
+            }\r
 \r
-        if (ResetOrMarkbutton != nullptr)\r
-        {\r
-            delete ResetOrMarkbutton;\r
-            ResetOrMarkbutton = nullptr;\r
-        }\r
+            if (PlayOrPausecheckBox != nullptr)\r
+            {\r
+                delete PlayOrPausecheckBox;\r
+                PlayOrPausecheckBox = nullptr;\r
+            }\r
 \r
-        if (LineImage != nullptr)\r
-        {\r
-            delete LineImage;\r
-            LineImage = nullptr;\r
-        }\r
+            if (ResetOrMarkbutton != nullptr)\r
+            {\r
+                delete ResetOrMarkbutton;\r
+                ResetOrMarkbutton = nullptr;\r
+            }\r
 \r
-        if (list != nullptr)\r
-        {\r
-            delete list;\r
-            list = nullptr;\r
-        }\r
+            if (LineImage != nullptr)\r
+            {\r
+                delete LineImage;\r
+                LineImage = nullptr;\r
+            }\r
 \r
-        if (listadapter != nullptr)\r
-        {\r
-            delete listadapter;\r
-            listadapter = nullptr;\r
-        }\r
+            if (list != nullptr)\r
+            {\r
+                delete list;\r
+                list = nullptr;\r
+            }\r
 \r
-        if (listdata != nullptr)\r
-        {\r
-            listdata->Clear();\r
-            delete listdata;\r
-            listdata = nullptr;\r
-        }\r
+            if (listadapter != nullptr)\r
+            {\r
+                delete listadapter;\r
+                listadapter = nullptr;\r
+            }\r
 \r
-        if (scrollView[MAIN_STOPWATCH] != nullptr)\r
-        {\r
-            delete scrollView[MAIN_STOPWATCH];\r
-            scrollView[MAIN_STOPWATCH] = nullptr;\r
-        }\r
+            if (listdata != nullptr)\r
+            {\r
+                listdata->Clear();\r
+                delete listdata;\r
+                listdata = nullptr;\r
+            }\r
 \r
-        if (p_StopWatchRecordCycleToLimitView != nullptr)\r
-        {\r
-            delete p_StopWatchRecordCycleToLimitView;\r
-            p_StopWatchRecordCycleToLimitView = nullptr;\r
-        }\r
+            if (scrollView[MAIN_STOPWATCH] != nullptr)\r
+            {\r
+                delete scrollView[MAIN_STOPWATCH];\r
+                scrollView[MAIN_STOPWATCH] = nullptr;\r
+            }\r
 \r
-        if (p_StopWatchRecordTimeToLimitView != nullptr)\r
-        {\r
-            delete p_StopWatchRecordTimeToLimitView;\r
-            p_StopWatchRecordTimeToLimitView = nullptr;\r
-        }\r
+            if (p_StopWatchRecordCycleToLimitView != nullptr)\r
+            {\r
+                delete p_StopWatchRecordCycleToLimitView;\r
+                p_StopWatchRecordCycleToLimitView = nullptr;\r
+            }\r
+\r
+            if (p_StopWatchRecordTimeToLimitView != nullptr)\r
+            {\r
+                delete p_StopWatchRecordTimeToLimitView;\r
+                p_StopWatchRecordTimeToLimitView = nullptr;\r
+            }\r
+\r
+            for (int i = MAIN_STOPWATCH; i < STOPWATCH_MAXVIEWID; i++)\r
+            {\r
+                scrollView[MAIN_STOPWATCH] = nullptr;\r
+            }\r
 \r
-        if (group != nullptr)\r
-        {\r
             delete group;\r
             group = nullptr;\r
         }\r
@@ -251,13 +256,13 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stopWatchlabel new fail!!");\r
                 return;\r
             }\r
-            stopWatchlabel->SetPosition(83, 52, 300, 40);\r
+            stopWatchlabel->SetPosition(83, 50, 300, 35);\r
             stopWatchlabel->SetStyle(STYLE_TEXT_FONT, 30);\r
             stopWatchlabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            stopWatchlabel->SetText("秒表");\r
-            stopWatchlabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            stopWatchlabel->SetTextId(STR_STOPWATCH); // 秒表\r
+            stopWatchlabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             stopWatchlabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            stopWatchlabel->SetRollSpeed(40);\r
+            stopWatchlabel->SetRollSpeed(70);\r
             stopWatchlabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             stopWatchlabel->SetVisible(true);\r
             /* ------------------------------ showTimelabel ----------------------------- */\r
@@ -295,6 +300,11 @@ namespace OHOS
             list->SetPosition(56, 170, 360, 100);\r
             list->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
             list->SetReboundSize(30);\r
+            list->SetThrowDrag(true);\r
+            list->SetIntercept(true);\r
+            list->SetMaxScrollDistance(1000);\r
+            list->SetDragACCLevel(5);\r
+            list->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
             list->SetVisible(false);\r
             /* ------------------------------- listadapter ------------------------------ */\r
             listadapter = new TextAdapter();\r
index 3b64f18..d7276cf 100644 (file)
@@ -82,7 +82,7 @@ namespace OHOS
     static void StopWatch_TimerCallbackProc(int data)\r
     {\r
         g_StopWatchTimes += 10; // 每次回调增加10毫秒\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_StopWatchTimes:%d\n", g_StopWatchTimes);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_StopWatchTimes:%d\n", g_StopWatchTimes);\r
 \r
         if (MainStopWatchView::GetInstance() == nullptr)\r
         {\r
index feca45e..276d7f9 100644 (file)
@@ -1,6 +1,7 @@
 #include "stopwatch/include/StopWatchRecordCycleToLimitView.h"\r
 #include "stopwatch/include/MainStopWatchPresenter.h"\r
 #include "UiConfig.h"\r
+#include "wearable_log.h"\r
 /*弹窗视图:到达最高圈数99时弹出*/\r
 namespace OHOS\r
 {\r
@@ -9,19 +10,19 @@ namespace OHOS
 \r
     StopWatchRecordCycleToLimitView::StopWatchRecordCycleToLimitView()\r
     {\r
-\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StopWatchRecordCycleToLimitView::StopWatchRecordCycleToLimitView");\r
         g_pStopWatchRecordCycleToLimitView = this;\r
     }\r
 \r
     StopWatchRecordCycleToLimitView::~StopWatchRecordCycleToLimitView()\r
     {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StopWatchRecordCycleToLimitView::~StopWatchRecordCycleToLimitView");\r
         ClearAll();\r
         g_pStopWatchRecordCycleToLimitView = nullptr;\r
     }\r
 \r
     StopWatchRecordCycleToLimitView *StopWatchRecordCycleToLimitView::GetInstance()\r
     {\r
-\r
         return g_pStopWatchRecordCycleToLimitView;\r
     }\r
     // 初始化秒表到达最高圈数时弹出的视图\r
@@ -37,19 +38,29 @@ namespace OHOS
             if (Title == nullptr)\r
             {\r
                 Title = new UILabelExt();\r
+                if (Title == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
-            Title->SetPosition(83, 52, 300, 40);\r
+            Title->SetPosition(83, 50, 300, 35);\r
             Title->SetStyle(STYLE_TEXT_FONT, 30);\r
             Title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            Title->SetText("秒表");\r
-            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            Title->SetTextId(STR_STOPWATCH); // 秒表\r
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            Title->SetRollSpeed(40);\r
+            Title->SetRollSpeed(70);\r
             Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
             if (AttentionImage == nullptr)\r
             {\r
                 AttentionImage = new UIImageView();\r
+                if (AttentionImage == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AttentionImage new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
             AttentionImage->SetPosition(193, 121, 100, 100);\r
             AttentionImage->SetStyle(STYLE_BORDER_RADIUS, 100);\r
@@ -58,29 +69,44 @@ namespace OHOS
             if (AttentionLabel == nullptr)\r
             {\r
                 AttentionLabel = new UILabelExt();\r
+                if (AttentionLabel == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AttentionLabel new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
-            AttentionLabel->SetPosition(83, 253, 300, 40);\r
+            AttentionLabel->SetPosition(83, 253, 300, 35);\r
             AttentionLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
             AttentionLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            AttentionLabel->SetText("当前已达到了最高圈数");\r
-            AttentionLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            AttentionLabel->SetTextId(STR_TMCHBR); // 当前已达到了最高计数\r
+            AttentionLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             AttentionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
             AttentionLabel->SetTextColor(Color::GetColorFromRGBA(0xaa, 0xaa, 0xaa, 0xff));\r
-            AttentionLabel->SetRollSpeed(40);\r
+            AttentionLabel->SetRollSpeed(70);\r
             AttentionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
             if (button == nullptr)\r
             {\r
                 button = new UILabelButtonExt();\r
+                if (button == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "button new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
             button->SetPosition(0, 366, 466, 100);\r
             button->SetViewId(CycleToLimitReturnButton_VIEWID);\r
             button->SetImageSrc(PNG_466x100BUTTON_IMAGE, PNG_466x100BUTTON_IMAGE);\r
-            button->SetText("知道了");\r
+            button->SetTextId(STR_KONW);\r
             button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             button->SetStyle(STYLE_LINE_HEIGHT, 35);\r
             button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
             UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(MainStopWatchPresenter::GetInstance());\r
+            if (buttonClick == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "buttonClick new fail");\r
+                return nullptr;\r
+            }\r
             button->SetOnClickListener(buttonClick);\r
             /* ----------------------------------- Add ---------------------------------- */\r
             scrollView->Add(Title);\r
@@ -93,30 +119,29 @@ namespace OHOS
 \r
     void StopWatchRecordCycleToLimitView::ClearAll()\r
     {\r
-        scrollView->RemoveAll();\r
-\r
-        if (Title != nullptr)\r
-        {\r
-            delete Title;\r
-            Title = nullptr;\r
-        }\r
-        if (AttentionImage != nullptr)\r
-        {\r
-            delete AttentionImage;\r
-            AttentionImage = nullptr;\r
-        }\r
-        if (AttentionLabel != nullptr)\r
-        {\r
-            delete AttentionLabel;\r
-            AttentionLabel = nullptr;\r
-        }\r
-        if (button != nullptr)\r
-        {\r
-            delete button;\r
-            button = nullptr;\r
-        }\r
         if (scrollView != nullptr)\r
         {\r
+            scrollView->RemoveAll();\r
+            if (Title != nullptr)\r
+            {\r
+                delete Title;\r
+                Title = nullptr;\r
+            }\r
+            if (AttentionImage != nullptr)\r
+            {\r
+                delete AttentionImage;\r
+                AttentionImage = nullptr;\r
+            }\r
+            if (AttentionLabel != nullptr)\r
+            {\r
+                delete AttentionLabel;\r
+                AttentionLabel = nullptr;\r
+            }\r
+            if (button != nullptr)\r
+            {\r
+                delete button;\r
+                button = nullptr;\r
+            }\r
             delete scrollView;\r
             scrollView = nullptr;\r
         }\r
index 241bd2c..8df7a03 100644 (file)
@@ -1,7 +1,7 @@
 #include "stopwatch/include/StopWatchRecordTimeToLimitView.h"\r
 #include "stopwatch/include/MainStopWatchPresenter.h"\r
 #include "UiConfig.h"\r
-\r
+#include "wearable_log.h"\r
 /*弹窗视图:到达最高时间99:59.99时弹出*/\r
 namespace OHOS\r
 {\r
@@ -10,11 +10,13 @@ namespace OHOS
 \r
     StopWatchRecordTimeToLimitView::StopWatchRecordTimeToLimitView()\r
     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StopWatchRecordTimeToLimitView::StopWatchRecordTimeToLimitView");\r
         g_pStopWatchRecordTimeToLimitView = this;\r
     }\r
 \r
     StopWatchRecordTimeToLimitView::~StopWatchRecordTimeToLimitView()\r
     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StopWatchRecordTimeToLimitView::~StopWatchRecordTimeToLimitView");\r
         ClearAll();\r
         g_pStopWatchRecordTimeToLimitView = nullptr;\r
     }\r
@@ -36,19 +38,29 @@ namespace OHOS
             if (Title == nullptr)\r
             {\r
                 Title = new UILabelExt();\r
+                if (Title == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
-            Title->SetPosition(83, 52, 300, 40);\r
+            Title->SetPosition(83, 50, 300, 35);\r
             Title->SetStyle(STYLE_TEXT_FONT, 30);\r
             Title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            Title->SetText("秒表");\r
-            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            Title->SetTextId(STR_STOPWATCH); // 秒表\r
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            Title->SetRollSpeed(40);\r
+            Title->SetRollSpeed(70);\r
             Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
             if (AttentionImage == nullptr)\r
             {\r
                 AttentionImage = new UIImageView();\r
+                if (AttentionImage == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AttentionImage new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
             AttentionImage->SetPosition(193, 121, 100, 100);\r
             AttentionImage->SetStyle(STYLE_BORDER_RADIUS, 100);\r
@@ -57,43 +69,63 @@ namespace OHOS
             if (AttentionLabel_1 == nullptr)\r
             {\r
                 AttentionLabel_1 = new UILabelExt();\r
+                if (AttentionLabel_1 == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AttentionLabel_1 new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
-            AttentionLabel_1->SetPosition(83, 235, 300, 40);\r
+            AttentionLabel_1->SetPosition(83, 235, 300, 35);\r
             AttentionLabel_1->SetStyle(STYLE_TEXT_FONT, 30);\r
             AttentionLabel_1->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            AttentionLabel_1->SetText("当前已达到了最长时间");\r
-            AttentionLabel_1->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            AttentionLabel_1->SetTextId(STR_MAXIMUM_TIME_REACH_NOTE); // 当前已达到了最长时间\r
+            AttentionLabel_1->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             AttentionLabel_1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
             AttentionLabel_1->SetTextColor(Color::GetColorFromRGBA(0xaa, 0xaa, 0xaa, 0xff));\r
-            AttentionLabel_1->SetRollSpeed(40);\r
+            AttentionLabel_1->SetRollSpeed(70);\r
             AttentionLabel_1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* ---------------------------- AttentionLabel_2 ---------------------------- */\r
             if (AttentionLabel_2 == nullptr)\r
             {\r
                 AttentionLabel_2 = new UILabelExt();\r
+                if (AttentionLabel_2 == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AttentionLabel_2 new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
-            AttentionLabel_2->SetPosition(33, 279, 400, 40);\r
+            AttentionLabel_2->SetPosition(53, 279, 360, 35);\r
             AttentionLabel_2->SetStyle(STYLE_TEXT_FONT, 30);\r
             AttentionLabel_2->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            AttentionLabel_2->SetText("表秒自动暂停,请重新开始");\r
-            AttentionLabel_2->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            AttentionLabel_2->SetTextId(STR_STOPWATCH_STOP_NOTE); // 秒表自动暂停,请重新开始\r
+            AttentionLabel_2->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
             AttentionLabel_2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
             AttentionLabel_2->SetTextColor(Color::GetColorFromRGBA(0xaa, 0xaa, 0xaa, 0xff));\r
-            AttentionLabel_2->SetRollSpeed(40);\r
+            AttentionLabel_2->SetRollSpeed(70);\r
             AttentionLabel_2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             /* -------------------------------------------------------------------------- */\r
             if (button == nullptr)\r
             {\r
                 button = new UILabelButtonExt();\r
+                if (button == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "button new fail");\r
+                    return nullptr;\r
+                }\r
             }\r
             button->SetPosition(0, 366, 466, 100);\r
             button->SetViewId(TimeToLimitReturnButton_VIEWID);\r
             button->SetImageSrc(PNG_466x100BUTTON_IMAGE, PNG_466x100BUTTON_IMAGE);\r
-            button->SetText("知道了");\r
+            button->SetTextId(STR_KONW);\r
             button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
             button->SetStyle(STYLE_LINE_HEIGHT, 35);\r
             button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
             UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(MainStopWatchPresenter::GetInstance());\r
+            if (buttonClick == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "buttonClick new fail");\r
+                return nullptr;\r
+            }\r
             button->SetOnClickListener(buttonClick);\r
             /* ----------------------------------- Add ---------------------------------- */\r
             scrollView->Add(Title);\r
@@ -107,29 +139,30 @@ namespace OHOS
 \r
     void StopWatchRecordTimeToLimitView::ClearAll()\r
     {\r
-        scrollView->RemoveAll();\r
-        if (Title != nullptr)\r
-        {\r
-            delete Title;\r
-            Title = nullptr;\r
-        }\r
-        if (AttentionImage != nullptr)\r
-        {\r
-            delete AttentionImage;\r
-            AttentionImage = nullptr;\r
-        }\r
-        if (AttentionLabel_1 != nullptr)\r
-        {\r
-            delete AttentionLabel_1;\r
-            AttentionLabel_1 = nullptr;\r
-        }\r
-        if (button != nullptr)\r
-        {\r
-            delete button;\r
-            button = nullptr;\r
-        }\r
         if (scrollView != nullptr)\r
         {\r
+            scrollView->RemoveAll();\r
+            if (Title != nullptr)\r
+            {\r
+                delete Title;\r
+                Title = nullptr;\r
+            }\r
+            if (AttentionImage != nullptr)\r
+            {\r
+                delete AttentionImage;\r
+                AttentionImage = nullptr;\r
+            }\r
+            if (AttentionLabel_1 != nullptr)\r
+            {\r
+                delete AttentionLabel_1;\r
+                AttentionLabel_1 = nullptr;\r
+            }\r
+            if (button != nullptr)\r
+            {\r
+                delete button;\r
+                button = nullptr;\r
+            }\r
+\r
             delete scrollView;\r
             scrollView = nullptr;\r
         }\r
index ff5de3a..fc65cf6 100644 (file)
@@ -1139,11 +1139,6 @@ void MsgCenterNotifyArAlertProc(const Topic topic, Request* req)
     {
         return;
     }
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON)
-    {
-        display_api->turn_on_screen();
-    }
     MotionRecognitionViewEventListener::GetInstance().SetMotionTypeId(*motionType);
     NotificationManager::GetInstance()->ShowNotify(showMotionRecognitionNotify, (uint16_t)topic, true);
 }
index 2dbd7a4..c4c9770 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-17 16:44:20
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-19 11:25:09
+ * @LastEditTime: 2024-08-20 11:01:16
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/motion_recognition_notification.cpp
  */
 #include "notification_manager.h"
@@ -19,7 +19,8 @@
 #include <service/graphic_service.h>
 #include "ConfigModel.h"
 #include "traing/include/TraingModel.h"
-
+#include "ui_service.h"
+#include "vibrator_service.h"
 namespace OHOS
 {
 
@@ -292,7 +293,7 @@ namespace OHOS
                 MotionRecognitionStartButton = new UIButton();
             }
             MotionRecognitionStartButton->SetPosition(238, MotionRecognitionNoteLabel->GetY() + MotionRecognitionNoteLabel->GetHeight() + 40, 170, 90);
-            MotionRecognitionStartButton->SetViewId(MOTION_RECOGNITION_IGNORE_BUTTONVIEWID);
+            MotionRecognitionStartButton->SetViewId(MOTION_RECOGNITION_START_BUTTONVIEWID);
             MotionRecognitionStartButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
             MotionRecognitionStartButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
             MotionRecognitionStartButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
@@ -330,6 +331,10 @@ namespace OHOS
             MotionRecognitionScrollView->Add(MotionRecognitionIgnoreLabel);
             MotionRecognitionGroupView->Add(MotionRecognitionScrollView);
         }
+        /* -------------------------------------------------------------------------- */
+        ScreenTurnOn(10*1000);//显示时长10s
+        ui_api_vibrate_once_func();
+        /* -------------------------------------------------------------------------- */
         NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeMotionRecognitionView);
         return MotionRecognitionGroupView;
     }
index 0f091fb..a760197 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang differ
index fc0599e..974f2c6 100644 (file)
@@ -531,7 +531,20 @@ enum UIResourceTextId : uint16_t {
     STR_IGNORE = 518,\r
     STR_START = 519,\r
     STR_ARC_SCALE_LIST_DISPLAY = 520,\r
-    STR_MAX_ID = 521,\r
+    STR_COUNT_DOWN = 521,\r
+    STR_CUSTOM_TIME = 522,\r
+    STR_QUICK_START = 523,\r
+    STR_1_MIN = 524,\r
+    STR_5_MIN = 525,\r
+    STR_10_MIN = 526,\r
+    STR_30_MIN = 527,\r
+    STR_SET_COUNT_DOWN_NOTE = 528,\r
+    STR_COUNTDOWN_ENDS = 529,\r
+    STR_MAXIMUM_TIME_REACH = 530,\r
+    STR_STOPWATCH_STOP_NOTE = 531,\r
+    STR_TMCHBR = 532,\r
+    STR_MAXIMUM_TIME_REACH_NOTE = 533,\r
+    STR_MAX_ID = 534,\r
 }; // UIResourceTextId\r
 
 enum FontLanguageId : uint8_t {
index f82b5f2..9e40293 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang differ
index 86267f0..677da9e 100644 (file)
@@ -510,7 +510,7 @@ STR_4G_NOTE$Note: After opening, the power consumption of the watch will be incr
 STR_MUSIC_PLAYER_SOURCE_NOTE$Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again\r
 STR_MUSIC_LIST_IS_EMPTY$The current music list is empty, please download and add via APP\r
 STR_BT_HEADSET_RESCAN$Rescan\r
-STR_BT_HEADSET_NOFOND$No headset Bluetooth device can be found\r
+STR_BT_HEADSET_NOFOND$No Bluetooth headset device can be found\r
 STR_SCHEDULE$Schedule\r
 STR_SCHEDULE_TITLE$Schedule management\r
 STR_SCHEDULE_NO_DATA$No schedules\r
@@ -518,4 +518,16 @@ STR_SCHEDULE_NO_DATA_PROMPT$Please sync with the APP
 STR_NO_PAIRED_DEV$No paired devices are available\r
 STR_IGNORE$Ignore\r
 STR_START$Start\r
-STR_ARC_SCALE_LIST_DISPLAY$Arc list display
\ No newline at end of file
+STR_ARC_SCALE_LIST_DISPLAY$Arc list display\r
+STR_COUNT_DOWN$Count Down\r
+STR_CUSTOM_TIME$Custom time\r
+STR_QUICK_START$Quick start\r
+STR_1_MIN$1min\r
+STR_5_MIN$5min\r
+STR_10_MIN$10min\r
+STR_30_MIN$30min\r
+STR_SET_COUNT_DOWN_NOTE$Please set up the countdown room first\r
+STR_COUNTDOWN_ENDS$Countdown ends\r
+STR_MAXIMUM_TIME_REACH$The maximum time has been reached\r
+STR_STOPWATCH_STOP_NOTE$Stopwatch stops automatically, please restart\r
+STR_TMCHBR$The maximum count has been reached
\ No newline at end of file
index 8b688eb..6900f9d 100644 (file)
@@ -510,7 +510,7 @@ STR_4G_NOTE$注:开启后,手表功耗会提高,待机时间会缩短
 STR_MUSIC_PLAYER_SOURCE_NOTE$请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试\r
 STR_MUSIC_LIST_IS_EMPTY$当前音乐列表为空请通过APP下载添加\r
 STR_BT_HEADSET_RESCAN$重新搜索\r
-STR_BT_HEADSET_NOFOND$å½\93å\89\8dæ\90\9cç´¢ä¸\8då\88°è\80³æ\9cºè\93\9dç\89\99设备\r
+STR_BT_HEADSET_NOFOND$å½\93å\89\8dæ\90\9cç´¢ä¸\8då\88°è\93\9dç\89\99è\80³æ\9cº设备\r
 STR_SCHEDULE$日程\r
 STR_SCHEDULE_TITLE$日程管理\r
 STR_SCHEDULE_NO_DATA$当前无日程\r
@@ -518,4 +518,16 @@ STR_SCHEDULE_NO_DATA_PROMPT$请先通过APP同步
 STR_NO_PAIRED_DEV$暂无已配对设备\r
 STR_IGNORE$忽略\r
 STR_START$开始\r
-STR_ARC_SCALE_LIST_DISPLAY$弧形列表显示
\ No newline at end of file
+STR_ARC_SCALE_LIST_DISPLAY$弧形列表显示\r
+STR_COUNT_DOWN$倒计时\r
+STR_CUSTOM_TIME$自定义时间\r
+STR_QUICK_START$快速开始\r
+STR_1_MIN$1分钟\r
+STR_5_MIN$5分钟\r
+STR_10_MIN$10分钟\r
+STR_30_MIN$30分钟\r
+STR_SET_COUNT_DOWN_NOTE$请先设置好倒计时间\r
+STR_COUNTDOWN_ENDS$倒计时结束\r
+STR_MAXIMUM_TIME_REACH_NOTE$当前已达到了最长时间\r
+STR_STOPWATCH_STOP_NOTE$秒表自动暂停,请重新开始\r
+STR_TMCHBR$当前已达到了最高计数
\ No newline at end of file
index 9dab50f..924ee89 100644 (file)
Binary files a/tools/language_tool/Language_xml/language.xlsx and b/tools/language_tool/Language_xml/language.xlsx differ
index 306a5e1..7d04ae1 100644 (file)
        <lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again"/>
        <lanstr id="STR_MUSIC_LIST_IS_EMPTY" value="The current music list is empty, please download and add via APP"/>
        <lanstr id="STR_BT_HEADSET_RESCAN" value="Rescan"/>
-       <lanstr id="STR_BT_HEADSET_NOFOND" value="No headset Bluetooth device can be found"/>
+       <lanstr id="STR_BT_HEADSET_NOFOND" value="No Bluetooth headset device can be found"/>
        <lanstr id="STR_SCHEDULE" value="Schedule"/>
        <lanstr id="STR_SCHEDULE_TITLE" value="Schedule management"/>
        <lanstr id="STR_SCHEDULE_NO_DATA" value="No schedules"/>
        <lanstr id="STR_IGNORE" value="Ignore"/>
        <lanstr id="STR_START" value="Start"/>
        <lanstr id="STR_ARC_SCALE_LIST_DISPLAY" value="Arc list display"/>
+       <lanstr id="STR_COUNT_DOWN" value="Count Down"/>
+       <lanstr id="STR_CUSTOM_TIME" value="Custom time"/>
+       <lanstr id="STR_QUICK_START" value="Quick start"/>
+       <lanstr id="STR_1_MIN" value="1min"/>
+       <lanstr id="STR_5_MIN" value="5min"/>
+       <lanstr id="STR_10_MIN" value="10min"/>
+       <lanstr id="STR_30_MIN" value="30min"/>
+       <lanstr id="STR_SET_COUNT_DOWN_NOTE" value="Please set up the countdown room first"/>
+       <lanstr id="STR_COUNTDOWN_ENDS" value="Countdown ends"/>
+       <lanstr id="STR_MAXIMUM_TIME_REACH" value="The maximum time has been reached"/>
+       <lanstr id="STR_STOPWATCH_STOP_NOTE" value="Stopwatch stops automatically, please restart"/>
+       <lanstr id="STR_TMCHBR" value="The maximum count has been reached"/>
 </language>
index 8470de5..5533e5c 100644 (file)
        <lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试"/>
        <lanstr id="STR_MUSIC_LIST_IS_EMPTY" value="当前音乐列表为空请通过APP下载添加"/>
        <lanstr id="STR_BT_HEADSET_RESCAN" value="重新搜索"/>
-       <lanstr id="STR_BT_HEADSET_NOFOND" value="å½\93å\89\8dæ\90\9cç´¢ä¸\8då\88°è\80³æ\9cºè\93\9dç\89\99设备"/>
+       <lanstr id="STR_BT_HEADSET_NOFOND" value="å½\93å\89\8dæ\90\9cç´¢ä¸\8då\88°è\93\9dç\89\99è\80³æ\9cº设备"/>
        <lanstr id="STR_SCHEDULE" value="日程"/>
        <lanstr id="STR_SCHEDULE_TITLE" value="日程管理"/>
        <lanstr id="STR_SCHEDULE_NO_DATA" value="当前无日程"/>
        <lanstr id="STR_IGNORE" value="忽略"/>
        <lanstr id="STR_START" value="开始"/>
        <lanstr id="STR_ARC_SCALE_LIST_DISPLAY" value="弧形列表显示"/>
+       <lanstr id="STR_COUNT_DOWN" value="倒计时"/>
+       <lanstr id="STR_CUSTOM_TIME" value="自定义时间"/>
+       <lanstr id="STR_QUICK_START" value="快速开始"/>
+       <lanstr id="STR_1_MIN" value="1分钟"/>
+       <lanstr id="STR_5_MIN" value="5分钟"/>
+       <lanstr id="STR_10_MIN" value="10分钟"/>
+       <lanstr id="STR_30_MIN" value="30分钟"/>
+       <lanstr id="STR_SET_COUNT_DOWN_NOTE" value="请先设置好倒计时间"/>
+       <lanstr id="STR_COUNTDOWN_ENDS" value="倒计时结束"/>
+       <lanstr id="STR_MAXIMUM_TIME_REACH_NOTE" value="当前已达到了最长时间"/>
+       <lanstr id="STR_STOPWATCH_STOP_NOTE" value="秒表自动暂停,请重新开始"/>
+       <lanstr id="STR_TMCHBR" value="当前已达到了最高计数"/>
 </language>
index 0f091fb..a760197 100644 (file)
Binary files a/tools/language_tool/font/en.lang and b/tools/language_tool/font/en.lang differ
index fc0599e..974f2c6 100644 (file)
@@ -531,7 +531,20 @@ enum UIResourceTextId : uint16_t {
     STR_IGNORE = 518,\r
     STR_START = 519,\r
     STR_ARC_SCALE_LIST_DISPLAY = 520,\r
-    STR_MAX_ID = 521,\r
+    STR_COUNT_DOWN = 521,\r
+    STR_CUSTOM_TIME = 522,\r
+    STR_QUICK_START = 523,\r
+    STR_1_MIN = 524,\r
+    STR_5_MIN = 525,\r
+    STR_10_MIN = 526,\r
+    STR_30_MIN = 527,\r
+    STR_SET_COUNT_DOWN_NOTE = 528,\r
+    STR_COUNTDOWN_ENDS = 529,\r
+    STR_MAXIMUM_TIME_REACH = 530,\r
+    STR_STOPWATCH_STOP_NOTE = 531,\r
+    STR_TMCHBR = 532,\r
+    STR_MAXIMUM_TIME_REACH_NOTE = 533,\r
+    STR_MAX_ID = 534,\r
 }; // UIResourceTextId\r
 
 enum FontLanguageId : uint8_t {
index f82b5f2..9e40293 100644 (file)
Binary files a/tools/language_tool/font/zh.lang and b/tools/language_tool/font/zh.lang differ