Browse Source

修复倍速播放异常

chendeben 1 year ago
parent
commit
43d20bd11f

+ 19 - 19
entry/src/main/ets/common/service/PlayerManager.ets

@@ -162,7 +162,7 @@ export class PlayerManager implements IPlayerManager {
           // 总是通知准备完成
           this.stateCallback?.onPrepared();
         } catch (error) {
-          LogUtils.getInstance().LOGI(`PlayerManager: Failed to start after prepared: ${error}`);
+          LogUtils.getInstance().LOGI(`Heanup PlayerManager: Failed to start after prepared: ${error}`);
           this.stateCallback?.onPlaybackError(-1, -1);
         }
       }
@@ -181,7 +181,7 @@ export class PlayerManager implements IPlayerManager {
     // 设置错误回调
     const onErrorListener: OnErrorListener = {
       onError: (what: number, extra: number) => {
-        LogUtils.getInstance().LOGI(`PlayerManager: Player error - what: ${what}, extra: ${extra}`);
+        LogUtils.getInstance().LOGI(`Heanup PlayerManager: Player error - what: ${what}, extra: ${extra}`);
         this.stateCallback?.onPlaybackError(what, extra);
         return true; // 表示错误已处理
       }
@@ -205,7 +205,7 @@ export class PlayerManager implements IPlayerManager {
       const duration = this.mIjkMediaPlayer.getDuration();
       const wasPaused = this.isPaused;
       
-      LogUtils.getInstance().LOGI(`PlayerManager: Starting/resuming playback (isPaused: ${wasPaused}, position: ${currentPosition}ms, duration: ${duration}ms)`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager: Starting/resuming playback (isPaused: ${wasPaused}, position: ${currentPosition}ms, duration: ${duration}ms)`);
       
       // 对于暂停后的恢复播放,直接调用start()
       // 对于新的播放,需要先调用prepareAsync(),在onPrepared回调中自动开始播放
@@ -214,7 +214,7 @@ export class PlayerManager implements IPlayerManager {
       if (wasPaused) {
         // 从暂停状态恢复,清除暂停标记
         this.isPaused = false;
-        LogUtils.getInstance().LOGI(`PlayerManager: Resumed from paused state at position ${currentPosition}ms`);
+        LogUtils.getInstance().LOGI(`Heanup PlayerManager: Resumed from paused state at position ${currentPosition}ms`);
       } else {
         LogUtils.getInstance().LOGI('PlayerManager: Started new playback');
       }
@@ -223,12 +223,12 @@ export class PlayerManager implements IPlayerManager {
       setTimeout(() => {
         const isNowPlaying = this.mIjkMediaPlayer.isPlaying();
         const newPosition = this.mIjkMediaPlayer.getCurrentPosition();
-        LogUtils.getInstance().LOGI(`PlayerManager: Playback verification - isPlaying: ${isNowPlaying}, position: ${newPosition}ms`);
+        LogUtils.getInstance().LOGI(`Heanup PlayerManager: Playback verification - isPlaying: ${isNowPlaying}, position: ${newPosition}ms`);
       }, 100);
       
       LogUtils.getInstance().LOGI('PlayerManager: Playback started/resumed successfully');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager startPlayOrResumePlay error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager startPlayOrResumePlay error: ${error}`);
       throw new Error(`Failed to start playback: ${error}`);
     }
   }
@@ -241,7 +241,7 @@ export class PlayerManager implements IPlayerManager {
       
       LogUtils.getInstance().LOGI('PlayerManager: Playback paused, isPaused flag set to true, state callback notified');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager pausePlayback error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager pausePlayback error: ${error}`);
     }
   }
 
@@ -257,7 +257,7 @@ export class PlayerManager implements IPlayerManager {
       
       LogUtils.getInstance().LOGI('PlayerManager: Playback stopped and state callback notified');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager stopPlayback error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager stopPlayback error: ${error}`);
     }
   }
 
@@ -270,7 +270,7 @@ export class PlayerManager implements IPlayerManager {
       // 不触发 onPlaybackCompleted 回调
       LogUtils.getInstance().LOGI('PlayerManager: Playback stopped silently without callback');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager stopPlaybackSilently error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager stopPlaybackSilently error: ${error}`);
     }
   } 
  async seekToPosition(value: string): Promise<void> {
@@ -289,9 +289,9 @@ export class PlayerManager implements IPlayerManager {
 
     try {
       this.mIjkMediaPlayer.seekTo(value);
-      LogUtils.getInstance().LOGI(`PlayerManager: Seeked to position ${value}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager: Seeked to position ${value}`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager seekToPosition error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager seekToPosition error: ${error}`);
       throw new Error(`Failed to seek to position: ${error}`);
     }
   }
@@ -301,16 +301,16 @@ export class PlayerManager implements IPlayerManager {
       this.mIjkMediaPlayer.setSpeed(speed);
       LogUtils.getInstance().LOGI(`PlayerManager: Speed set to ${speed}`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager setPlaybackSpeed error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager setPlaybackSpeed error: ${error}`);
     }
   }
 
   setVolume(leftVolume: string, rightVolume: string): void {
     try {
       this.mIjkMediaPlayer.setVolume(leftVolume, rightVolume);
-      LogUtils.getInstance().LOGI(`PlayerManager: Volume set to L:${leftVolume} R:${rightVolume}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager: Volume set to L:${leftVolume} R:${rightVolume}`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager setVolume error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager setVolume error: ${error}`);
     }
   }
 
@@ -323,24 +323,24 @@ export class PlayerManager implements IPlayerManager {
       
       // 如果内部标记为暂停,直接返回true(优先级最高)
       if (internalPausedFlag) {
-        LogUtils.getInstance().LOGI(`PlayerManager isPausedState: internal=${internalPausedFlag}, isPlaying=${playerIsPlaying}, hasDuration=${hasDuration}, result=true (internal priority)`);
+        LogUtils.getInstance().LOGI(`Heanup PlayerManager isPausedState: internal=${internalPausedFlag}, isPlaying=${playerIsPlaying}, hasDuration=${hasDuration}, result=true (internal priority)`);
         return true;
       }
       
       // 如果播放器有时长但没有播放,也认为是暂停状态(但要排除加载中的情况)
       const playerNotPlayingButReady = !playerIsPlaying && hasDuration;
       
-      LogUtils.getInstance().LOGI(`PlayerManager isPausedState: internal=${internalPausedFlag}, isPlaying=${playerIsPlaying}, hasDuration=${hasDuration}, result=${playerNotPlayingButReady}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager isPausedState: internal=${internalPausedFlag}, isPlaying=${playerIsPlaying}, hasDuration=${hasDuration}, result=${playerNotPlayingButReady}`);
       
       return playerNotPlayingButReady;
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager isPausedState error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager isPausedState error: ${error}`);
       return this.isPaused; // 发生错误时返回内部标记
     }
   }
 
   clearPausedState(): void {
-    LogUtils.getInstance().LOGI(`PlayerManager clearPausedState: clearing paused flag (was ${this.isPaused})`);
+    LogUtils.getInstance().LOGI(`Heanup PlayerManager clearPausedState: clearing paused flag (was ${this.isPaused})`);
     this.isPaused = false;
   }
 
@@ -363,7 +363,7 @@ export class PlayerManager implements IPlayerManager {
       
       LogUtils.getInstance().LOGI('PlayerManager: Resources released');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`PlayerManager release error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup PlayerManager release error: ${error}`);
     }
   }
 }

+ 5 - 1
entry/src/main/ets/common/service/UnifiedPlayerService.ets

@@ -2143,7 +2143,7 @@ export class UnifiedPlayerService implements IPlayerService, PlaylistSyncListene
     
     LogUtils.getInstance().LOGI(`Heanup UnifiedPlayerService: Set data source to ${song.filePath}`);
 
-    // 优化:异步设置HTTP请求头和播放速度,不阻塞主流程
+    // 优化:异步设置HTTP请求头,不阻塞主流程
     Promise.resolve().then(() => {
       // 设置HTTP请求头
       const headers = new Map([
@@ -2175,6 +2175,10 @@ export class UnifiedPlayerService implements IPlayerService, PlaylistSyncListene
     ijkPlayer.native_setup(); // 音频模式初始化
     ijkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", "0");
     ijkPlayer.setScreenOnWhilePlaying(true);
+    
+    // 关键修复:确保变速播放配置在每次歌曲切换时都被设置
+    ijkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", "1");
+    LogUtils.getInstance().LOGI('UnifiedPlayerService: Essential soundtouch configured for speed control');
   }
 
   private setupProgressTimer(): void {

+ 39 - 39
entry/src/main/ets/view/LocalMusic.ets

@@ -454,13 +454,13 @@ export struct LocalMusic {
           this.cover = this.currentSong.pixelMapPath;
         }
 
-        LogUtils.getInstance().LOGI(`LocalMusic: Restored playlist from UnifiedPlayerService - ${this.songList.length} songs, index ${this.curIndex}, current song: ${this.currentSong?.name || 'null'}`);
+        LogUtils.getInstance().LOGI(`Heanup LocalMusic: Restored playlist from UnifiedPlayerService - ${this.songList.length} songs, index ${this.curIndex}, current song: ${this.currentSong?.name || 'null'}`);
       } else {
         LogUtils.getInstance().LOGI('LocalMusic: No playlist restored from UnifiedPlayerService, songList length = ' + this.songList.length);
         if (ArrayUtil.isNotEmpty(this.songList)) {
           // 如果LocalMusic有播放列表但UnifiedPlayerService没有,设置到服务中
           this.unifiedPlayerService.setPlaylist(this.songList, this.curIndex);
-          LogUtils.getInstance().LOGI(`LocalMusic: Set existing playlist to UnifiedPlayerService - ${this.songList.length} songs`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Set existing playlist to UnifiedPlayerService - ${this.songList.length} songs`);
         }
       }
       // 不设置LocalMusic自己的AVSession监听器,完全依赖UnifiedPlayerService
@@ -472,9 +472,9 @@ export struct LocalMusic {
         try {
           const currentState = this.unifiedPlayerService.getCurrentState();
           const actuallyPlaying = this.unifiedPlayerService.getActualPlayingState();
-          LogUtils.getInstance().LOGI(`LocalMusic: Syncing current state - StateModel: ${currentState.isPlaying}, ActualPlayer: ${actuallyPlaying}`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Syncing current state - StateModel: ${currentState.isPlaying}, ActualPlayer: ${actuallyPlaying}`);
         } catch (error) {
-          LogUtils.getInstance().LOGI(`LocalMusic: Failed to sync current state: ${error}`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Failed to sync current state: ${error}`);
         }
       }, 200); // 短延迟,确保组件完全初始化
 
@@ -488,7 +488,7 @@ export struct LocalMusic {
       // 初始化完成后,开始加载本地文件
       this.loadLocalFilesAfterServiceInit();
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic: Failed to initialize UnifiedPlayerService: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Failed to initialize UnifiedPlayerService: ${error}`);
       ToastUtil.showToast('播放器服务初始化失败');
 
       // 即使服务初始化失败,也要加载本地文件
@@ -514,7 +514,7 @@ export struct LocalMusic {
         this.songList = unifiedPlaylist;
         this.curIndex = unifiedIndex;
         this.currentSong = unifiedSong || undefined;
-        LogUtils.getInstance().LOGI(`LocalMusic: Using playlist from UnifiedPlayerService - ${this.songList.length} songs, index ${this.curIndex}, current song: ${this.currentSong?.name || 'null'}`);
+        LogUtils.getInstance().LOGI(`Heanup LocalMusic: Using playlist from UnifiedPlayerService - ${this.songList.length} songs, index ${this.curIndex}, current song: ${this.currentSong?.name || 'null'}`);
       } else {
         // 回退到旧的存储方式
         LogUtils.getInstance().LOGI('LocalMusic: UnifiedPlayerService playlist empty, falling back to legacy storage');
@@ -522,13 +522,13 @@ export struct LocalMusic {
         this.currentSong = PreferencesUtil.getSync('LastMusicInfo', undefined) as VideoItem
         if (ArrayUtil.isEmpty(this.songList)) {
           const currentFileList = this.getCurFileList();
-          LogUtils.getInstance().LOGI(`LocalMusic: No legacy playlist found, current directory has ${currentFileList.length} songs`);
-          LogUtils.getInstance().LOGI(`LocalMusic: Current path: ${this.currentPath}, Root path: ${this.rootPath}`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: No legacy playlist found, current directory has ${currentFileList.length} songs`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Current path: ${this.currentPath}, Root path: ${this.rootPath}`);
           this.songList = currentFileList;
-          LogUtils.getInstance().LOGI(`LocalMusic: Using current file list as fallback - ${this.songList.length} songs`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Using current file list as fallback - ${this.songList.length} songs`);
         } else {
           this.curIndex = Utility.getIndexFromList(this.songList, this.currentSong.filePath)
-          LogUtils.getInstance().LOGI(`LocalMusic: Using legacy playlist storage - ${this.songList.length} songs, index ${this.curIndex}`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Using legacy playlist storage - ${this.songList.length} songs, index ${this.curIndex}`);
         }
       }
 
@@ -555,7 +555,7 @@ export struct LocalMusic {
    */
   public onPlayerStateChanged(state: PlayerState): void {
     try {
-      LogUtils.getInstance().LOGI(`LocalMusic: Received state change from UnifiedPlayerService - isPlaying: ${state.isPlaying}, isPaused: ${state.isPaused}, currentIndex: ${state.currentIndex}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Received state change from UnifiedPlayerService - isPlaying: ${state.isPlaying}, isPaused: ${state.isPaused}, currentIndex: ${state.currentIndex}, speed: ${state.speed}`);
 
       // 同步播放状态到UI
       if (state.isPlaying !== undefined) {
@@ -584,7 +584,7 @@ export struct LocalMusic {
 
       LogUtils.getInstance().LOGI('LocalMusic: UI state synchronized with UnifiedPlayerService');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic: Error handling state change: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Error handling state change: ${error}`);
     }
   }
 
@@ -594,7 +594,7 @@ export struct LocalMusic {
    */
   public onPlayerSongChanged(song: VideoItem): void {
     try {
-      LogUtils.getInstance().LOGI(`LocalMusic: Received song change from UnifiedPlayerService - ${song.name}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Received song change from UnifiedPlayerService - ${song.name}`);
 
       // 同步当前歌曲信息到UI
       this.currentSong = song;
@@ -618,7 +618,7 @@ export struct LocalMusic {
 
       LogUtils.getInstance().LOGI('LocalMusic: UI song info synchronized with UnifiedPlayerService');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic: Error handling song change: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Error handling song change: ${error}`);
     }
   }
 
@@ -628,7 +628,7 @@ export struct LocalMusic {
    */
   public onPlayerError(error: PlayerError): void {
     try {
-      LogUtils.getInstance().LOGI(`LocalMusic: Received error from UnifiedPlayerService - ${error.type}: ${error.message}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Received error from UnifiedPlayerService - ${error.type}: ${error.message}`);
 
       // 根据错误类型显示不同的提示
       switch (error.type) {
@@ -648,7 +648,7 @@ export struct LocalMusic {
 
       LogUtils.getInstance().LOGI('LocalMusic: Error handled and user notified');
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic: Error handling player error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Error handling player error: ${error}`);
     }
   }
 
@@ -677,10 +677,10 @@ export struct LocalMusic {
         // 刷新UnifiedPlayerService的收藏状态,这会自动更新AVSession
         // await this.unifiedPlayerService.refreshFavoriteStatus();
 
-        LogUtils.getInstance().LOGI(`LocalMusic: 收藏状态已同步 - ${this.currentSong.name}: ${isFavorite ? '已收藏' : '未收藏'}`);
+        LogUtils.getInstance().LOGI(`Heanup LocalMusic: 收藏状态已同步 - ${this.currentSong.name}: ${isFavorite ? '已收藏' : '未收藏'}`);
       }
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic: 同步收藏状态失败: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: 同步收藏状态失败: ${error}`);
     }
   }
 
@@ -1105,7 +1105,7 @@ export struct LocalMusic {
         } else if (this.currentSong === undefined && this.curIndex >= 0 && this.curIndex < this.songList.length) {
           // 如果有有效索引但没有当前歌曲,从索引恢复
           this.currentSong = this.songList[this.curIndex]
-          LogUtils.getInstance().LOGI(`LocalMusic: mkDownLoadDir - Restored current song from index ${this.curIndex}: ${this.currentSong.name}`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: mkDownLoadDir - Restored current song from index ${this.curIndex}: ${this.currentSong.name}`);
         }
 
         if (this.currentSong) {
@@ -1115,7 +1115,7 @@ export struct LocalMusic {
           AppStorage.setOrCreate('currentSong',this.currentSong);
         }
 
-        LogUtils.getInstance().LOGI(`LocalMusic: mkDownLoadDir - UI updated with existing playlist: ${this.songList.length} songs, current index: ${this.curIndex}, current song: ${this.currentSong?.name || 'none'}`);
+        LogUtils.getInstance().LOGI(`Heanup LocalMusic: mkDownLoadDir - UI updated with existing playlist: ${this.songList.length} songs, current index: ${this.curIndex}, current song: ${this.currentSong?.name || 'none'}`);
       } else {
         this.name = '空空如也'
         LogUtils.getInstance().LOGI('LocalMusic: mkDownLoadDir - No playlist available, showing empty state');
@@ -1533,18 +1533,18 @@ export struct LocalMusic {
           // 更新播放列表中的封面信息
           this.songList[index].pixelMapPath = matchedSong.pixelMapPath;
           hasUpdates = true;
-          LogUtils.getInstance().LOGI(`LocalMusic: Updated cover for ${song.name}: ${matchedSong.pixelMapPath}`);
+          LogUtils.getInstance().LOGI(`Heanup LocalMusic: Updated cover for ${song.name}: ${matchedSong.pixelMapPath}`);
         }
       });
 
       // 如果有更新,刷新UI数据源
       if (hasUpdates) {
         this.sonDataSource.pushArrayData(this.songList);
-        LogUtils.getInstance().LOGI(`LocalMusic: Refreshed covers for playlist with ${this.songList.length} songs`);
+        LogUtils.getInstance().LOGI(`Heanup LocalMusic: Refreshed covers for playlist with ${this.songList.length} songs`);
       }
 
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic: Error refreshing playlist covers: ${error.message}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Error refreshing playlist covers: ${error.message}`);
     }
   }
 
@@ -7795,11 +7795,11 @@ export struct LocalMusic {
     this.animationState = isPlaying ? AnimationStatus.Running : AnimationStatus.Paused;
 
     // 记录状态变化日志
-    LogUtils.getInstance().LOGI(`LocalMusic: playChange - CONTROL_PlayStatus: ${this.CONTROL_PlayStatus}, isPlaying: ${isPlaying}, globalIsPlaying: ${this.isPlaying}`);
+    LogUtils.getInstance().LOGI(`Heanup LocalMusic: playChange - CONTROL_PlayStatus: ${this.CONTROL_PlayStatus}, isPlaying: ${isPlaying}, globalIsPlaying: ${this.isPlaying}`);
 
     // 强制触发UI刷新 - 这对于@State变量应该是自动的,但我们确保一下
     setTimeout(() => {
-      LogUtils.getInstance().LOGI(`LocalMusic: UI refresh triggered - CONTROL_PlayStatus: ${this.CONTROL_PlayStatus}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: UI refresh triggered - CONTROL_PlayStatus: ${this.CONTROL_PlayStatus}`);
     }, 50);
   }
 
@@ -10845,7 +10845,7 @@ export struct LocalMusic {
 
       LogUtils.getInstance().LOGI("LocalMusic: startPlayOrResumePlay completed via UnifiedPlayerService");
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic startPlayOrResumePlay error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic startPlayOrResumePlay error: ${error}`);
       ToastUtil.showToast(`播放失败: ${error}`);
 
       // 错误处理:回退到原有逻辑
@@ -10896,7 +10896,7 @@ export struct LocalMusic {
 
       LogUtils.getInstance().LOGI("LocalMusic: playSpecificSong completed via UnifiedPlayerService");
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic playSpecificSong error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic playSpecificSong error: ${error}`);
       ToastUtil.showToast(`播放失败: ${error}`);
       this.handlePlaybackError();
     }
@@ -10908,9 +10908,9 @@ export struct LocalMusic {
       this.unifiedPlayerService.setVolume(volume);
       this.volume = volume;
       PreferencesUtil.putSync('DefalutVolume', volume);
-      LogUtils.getInstance().LOGI(`LocalMusic: Volume set to ${volume} via UnifiedPlayerService`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Volume set to ${volume} via UnifiedPlayerService`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic setVolume error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic setVolume error: ${error}`);
       ToastUtil.showToast(`设置音量失败: ${error}`);
     }
   }
@@ -10920,9 +10920,9 @@ export struct LocalMusic {
     try {
       this.unifiedPlayerService.setPlaybackSpeed(speed);
       this.playSpeed = speed;
-      LogUtils.getInstance().LOGI(`LocalMusic: Playback speed set to ${speed} via UnifiedPlayerService`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Playback speed set to ${speed} via UnifiedPlayerService`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic setPlaybackSpeed error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic setPlaybackSpeed error: ${error}`);
       ToastUtil.showToast(`设置播放速度失败: ${error}`);
     }
   }
@@ -10933,9 +10933,9 @@ export struct LocalMusic {
       this.unifiedPlayerService.setPlayMode(mode);
       this.playType = mode;
       PreferencesUtil.putSync('musicPlayType', mode);
-      LogUtils.getInstance().LOGI(`LocalMusic: Play mode set to ${mode} via UnifiedPlayerService`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: Play mode set to ${mode} via UnifiedPlayerService`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic setPlayMode error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic setPlayMode error: ${error}`);
       // 回退到原有逻辑
       this.playType = mode;
       PreferencesUtil.putSync('musicPlayType', mode);
@@ -10981,7 +10981,7 @@ export struct LocalMusic {
       // 直接调用统一服务的方法
       this.unifiedPlayerService.syncPlaylistToService(this.songList, this.curIndex, this.playType);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic syncPlaylistToService (deprecated) error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic syncPlaylistToService (deprecated) error: ${error}`);
     }
   }
 
@@ -11200,7 +11200,7 @@ export struct LocalMusic {
     //   // 节流广播进度更新到卡片
     //   this.broadcastProgressIfNeeded();
     // } catch (error) {
-    //   LogUtils.getInstance().LOGI(`LocalMusic setProgress error: ${error}`);
+    //   LogUtils.getInstance().LOGI(`Heanup LocalMusic setProgress error: ${error}`);
     // }
   }
 
@@ -12109,7 +12109,7 @@ export struct LocalMusic {
     //
     //   LogUtils.getInstance().LOGI("LocalMusic: pause completed via UnifiedPlayerService");
     // } catch (error) {
-    //   LogUtils.getInstance().LOGI(`LocalMusic pause error: ${error}`);
+    //   LogUtils.getInstance().LOGI(`Heanup LocalMusic pause error: ${error}`);
     //   ToastUtil.showToast(`暂停失败: ${error}`);
     // }
   }
@@ -12130,7 +12130,7 @@ export struct LocalMusic {
 
       LogUtils.getInstance().LOGI("LocalMusic: stop completed - all states cleared to INIT");
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic stop error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic stop error: ${error}`);
       ToastUtil.showToast(`停止播放失败: ${error}`);
     }
   }
@@ -12160,9 +12160,9 @@ export struct LocalMusic {
       // 保持原有的UI更新逻辑
       this.setProgress()
 
-      LogUtils.getInstance().LOGI(`LocalMusic: seekTo ${value} completed via UnifiedPlayerService`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic: seekTo ${value} completed via UnifiedPlayerService`);
     } catch (error) {
-      LogUtils.getInstance().LOGI(`LocalMusic seekTo error: ${error}`);
+      LogUtils.getInstance().LOGI(`Heanup LocalMusic seekTo error: ${error}`);
 
       // 如果是WMA格式错误,显示特定提示
       if (error.toString().includes('WMA format')) {