优化录音播放函数,增加条件判断提高代码健壮 1634/2
authorluozheng <1732036298@qq.com>
Sat, 18 Jan 2025 02:44:02 +0000 (10:44 +0800)
committerluozheng <1732036298@qq.com>
Sat, 18 Jan 2025 02:44:02 +0000 (10:44 +0800)
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingModel.cpp

index dd797c0..9b578e2 100644 (file)
@@ -246,6 +246,12 @@ namespace OHOS
 
         // 设置回调函数
         PlayerCtr->SetPlayerCallback(PlayerCallback);
+        // 添加条件判断,确保uri必须为MP3格式
+        if (Uri.find(".mp3") == std::string::npos)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid file format. Only MP3 files are supported.");
+            return OHOS_FAILURE;
+        }
         // 申请资源
         Resource = std::make_shared<Source>(Uri, Header);
         if (Resource.get() == nullptr)
@@ -253,9 +259,21 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Resource new fail");
             return OHOS_FAILURE;
         }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Player uri %s.", Uri.c_str());
-        PlayerCtr->SetSource(*Resource);
-        PlayerCtr->Prepare();
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Player uri %s.", Uri.c_str());
+        ret = PlayerCtr->SetSource(*Resource);
+        if (ret != 0)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetSource fail");
+            PlayerCtr->Reset();
+            return OHOS_FAILURE;
+        }
+        ret = PlayerCtr->Prepare();
+        if (ret != 0)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Prepare fail");
+            PlayerCtr->Reset();
+            return OHOS_FAILURE;
+        }
         ret = PlayerCtr->GetDuration(DurationTime);
         ConvertMillisecondToTime(DurationTime);
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%s,%d] GetDuration:%lld,%s, ret:%d", __func__, __LINE__, DurationTime, TotalRecordDuration.c_str(), ret);
@@ -287,7 +305,13 @@ namespace OHOS
             }
             IsActivateAudioInterrupt = true;
         }
-        PlayerCtr->SetAudioSessionId(SessionId);
+        ret = PlayerCtr->SetAudioSessionId(SessionId);
+        if (ret != 0)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetAudioSessionId faild");
+            PlayerCtr->Reset();
+            return OHOS_FAILURE;
+        }
         // 播放
         ret = PlayerCtr->Play();
         if (ret != 0)