1.倒计时界面,UI刷新改用Notify,减少误差
authorluozheng <1732036298@qq.com>
Sun, 20 Oct 2024 07:56:30 +0000 (15:56 +0800)
committerluozheng <1732036298@qq.com>
Sun, 20 Oct 2024 07:56:30 +0000 (15:56 +0800)
2.倒计时响铃流类型改为:AUDIO_STREAM_NOTIFICATION_SYSTEM 支持a2dp播放时混音

code/sdk/application/wearable/fd230app/nativeui/countdown/include/MainCountDownPresenter.h
code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp
code/sdk/application/wearable/fd230app/nativeui/countdown/src/MainCountDownPresenter.cpp

index c87e4a4..e16f7fe 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-08-20 10:17:35\r
+ * @LastEditTime: 2024-10-19 17:07:09\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/include/MainCountDownPresenter.h\r
  */\r
 #ifndef MAIN_COUNTDOWN_PRESENTER_H\r
@@ -12,6 +12,7 @@
 #include "Presenter.h"\r
 #include "MainCountDownView.h"\r
 #include "ui_resource_string.h"\r
+#include "ModelListenerSample.h"\r
 /*倒计时的主界面*/\r
 namespace OHOS\r
 {\r
@@ -31,7 +32,8 @@ namespace OHOS
                                    public UIView::OnDragListener,\r
                                    UITimePicker::SelectedListener,\r
                                    public UICheckBox::OnChangeListener,\r
-                                   public RootView::OnKeyActListener\r
+                                   public RootView::OnKeyActListener,\r
+                                   public ModelListenerSample\r
     {\r
     public:\r
         MainCountDownPresenter();\r
@@ -52,6 +54,7 @@ namespace OHOS
         bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
         bool OnChange(UICheckBox::UICheckBoxState state) override;\r
         void OnTimePickerStoped(UITimePicker &picker) override;\r
+        void Notify() override;\r
 \r
         std::string countdowntime{0};\r
         std::string ringtime{0};\r
index 7518ec0..c159932 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-10-11 16:17:52\r
+ * @LastEditTime: 2024-10-20 11:49:21\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp\r
  */\r
 #include "countdown/include/CountDownModel.h"\r
@@ -174,7 +174,7 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CountDownModel] Player url:%s", uri.c_str());\r
         playerCtr->SetSource(*source);\r
         /* --------------------------------- 4.配置播放器 -------------------------------- */\r
-        playerCtr->SetAudioStreamType(AUDIO_STREAM_MUSIC); // 设置播放器的音频流类型\r
+        playerCtr->SetAudioStreamType(AUDIO_STREAM_NOTIFICATION_SYSTEM); // 设置播放器的音频流类型\r
         playerCtr->Prepare();                              // 准备播放器对象以播放音频。\r
         /* -------------------------------- 5.请求音频焦点 -------------------------------- */\r
         AudioManager &amIntance = AudioManager::GetInstance();\r
@@ -192,7 +192,7 @@ namespace OHOS
             return OHOS_FAILURE;\r
         }\r
         playerInterruptListener->SetOwner(playerCtr);\r
-        interrupt = {AUDIO_STREAM_MUSIC, sessionId, playerInterruptListener};\r
+        interrupt = {AUDIO_STREAM_NOTIFICATION_SYSTEM, sessionId, playerInterruptListener};\r
         // 激活音频中断 5s超时\r
         if (amIntance.ActivateAudioInterrupt(interrupt) == INTERRUPT_FAILED)\r
         {\r
@@ -203,6 +203,7 @@ namespace OHOS
         playerCtr->SetAudioSessionId(sessionId);\r
         // 播放\r
         playerCtr->Play();\r
+        playerCtr->EnableSingleLooping(true); // 设置是否循环播放\r
         return OHOS_SUCCESS;\r
     }\r
 \r
@@ -436,14 +437,14 @@ namespace OHOS
                 }\r
             }\r
         }\r
-        else\r
-        {\r
-            if (p_StartCountDownView)\r
-            {\r
-                // 更新显示\r
-                p_StartCountDownView->GetShowCountDownTimelabel()->SetText(CountDownModel::GetInstance()->DisplayCountDownDuration());\r
-            }\r
-        }\r
+        // else\r
+        // {\r
+        //     if (p_StartCountDownView)\r
+        //     {\r
+        //         // 更新显示\r
+        //         p_StartCountDownView->GetShowCountDownTimelabel()->SetText(CountDownModel::GetInstance()->DisplayCountDownDuration());\r
+        //     }\r
+        // }\r
 \r
         return;\r
     }\r
@@ -646,8 +647,8 @@ namespace OHOS
     void CountDownRingPlayerCallbackImpl::OnPlaybackComplete(void)\r
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnPlaybackComplete");\r
-        CountDownModel::GetInstance()->RequestStopRingtone();\r
-        CountDownModel::GetInstance()->RequestStartRingtone();\r
+        // CountDownModel::GetInstance()->RequestStopRingtone();\r
+        // CountDownModel::GetInstance()->RequestStartRingtone();\r
     }\r
 \r
     void CountDownRingPlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)\r
index 1348873..da46478 100644 (file)
@@ -295,4 +295,18 @@ namespace OHOS
         CountDownModel::GetInstance()->SetCountDownTime(picker.GetSelectValue()); // 设置倒计时时间\r
         CountDownModel::GetInstance()->SetRingTime(picker.GetSelectValue());      // 设置响铃时间\r
     }\r
+    void MainCountDownPresenter::Notify()\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCountDownPresenter::Notify");\r
+        if(CountDownModel::GetInstance()->CountDownTimerIsEnd()) // 倒计时timer已经停止直接退出不刷新\r
+        {\r
+            return;\r
+        }\r
+        StartCountDownView *p_StartCountDownView = StartCountDownView::GetInstance();\r
+        if (p_StartCountDownView && p_StartCountDownView->GetShowCountDownTimelabel())\r
+        {\r
+            // 更新显示\r
+            p_StartCountDownView->GetShowCountDownTimelabel()->SetText(CountDownModel::GetInstance()->DisplayCountDownDuration());\r
+        }\r
+    }\r
 }
\ No newline at end of file