Browse Source

修复播放网盘音乐时播控中心不显示时间的问题

chendeben 8 tháng trước cách đây
mục cha
commit
80efdf012d
1 tập tin đã thay đổi với 22 bổ sung1 xóa
  1. 22 1
      entry/src/main/ets/view/LocalMusic.ets

+ 22 - 1
entry/src/main/ets/view/LocalMusic.ets

@@ -1681,6 +1681,19 @@ export struct LocalMusic {
       if (payload.lyricContent) {
         this.applyInlineLyricContent(payload.lyricContent);
       }
+      let avSessionDurationMs = this.duration;
+      if (payload.duration) {
+        const durationSeconds = Number(payload.duration);
+        if (!Number.isNaN(durationSeconds) && durationSeconds > 0) {
+          avSessionDurationMs = durationSeconds * 1000;
+          this.duration = avSessionDurationMs;
+          this.durationTime = Math.floor(avSessionDurationMs / 1000);
+          this.durationStringTime = secondToTime(this.durationTime);
+        }
+      }
+      if (avSessionDurationMs > 0) {
+        this.avSessionController.setAVMetadataMusic(this.currentSong, avSessionDurationMs, this.lyricContent);
+      }
       this.currentSong = cloneVideoItem(this.currentSong);
       AppStorage.setOrCreate('currentSong', this.currentSong);
     }
@@ -13517,10 +13530,18 @@ export struct LocalMusic {
 
           await this.initLyric(lyricPath);
 
+          const preparedDuration = this.mIjkMediaPlayer.getDuration();
+          if (preparedDuration > 0) {
+            this.duration = preparedDuration;
+            this.durationTime = Math.floor(preparedDuration / 1000);
+            this.durationStringTime = secondToTime(this.durationTime);
+          }
 
           setTimeout(() => {
             this.avSessionController.initAvSession(false);
-            this.avSessionController.setAVMetadataMusic(this.songList[this.curIndex], this.duration, this.lyricContent);
+            if (this.duration > 0) {
+              this.avSessionController.setAVMetadataMusic(this.songList[this.curIndex], this.duration, this.lyricContent);
+            }
 
             this.setAvSessionListener();