音乐播放PlayerStat函数优化添加条件判断,提高代码健壮性 1632/6 1632/head
authorluozheng <1732036298@qq.com>
Fri, 17 Jan 2025 04:01:37 +0000 (12:01 +0800)
committerluozheng <1732036298@qq.com>
Fri, 17 Jan 2025 04:01:37 +0000 (12:01 +0800)
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp

index 4ad93e4..b48d4de 100644 (file)
@@ -89,15 +89,30 @@ int PlayersModel::PlayerStat()
 
     // 设置回调函数
     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;
+    }
     // 申请资源
     source = std::make_shared<Source>(uri, header);
     if (source.get() == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "source new fail");
         return OHOS_FAILURE;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Player uri %s.", uri.c_str());
-    playerCtr->SetSource(*source);
-    playerCtr->Prepare();
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Player uri %s", uri.c_str());
+    ret = playerCtr->SetSource(*source);
+    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(duration_);
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%s,%d] GetDuration:%lld, ret:%d", __func__, __LINE__, duration_, ret);
     if (!isActivateAudioInterrupt) {
@@ -123,7 +138,12 @@ int PlayersModel::PlayerStat()
         }
         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) {