Parcourir la source

修复首次点击桌面卡片无法播放

chendeben il y a 1 an
Parent
commit
3f4a6cb854

+ 1 - 10
entry/src/main/ets/common/service/DataPersistenceService.ets

@@ -467,11 +467,9 @@ export class DataPersistenceService implements IDataPersistenceService {
         throw new Error('DataPersistenceService not initialized');
       }
 
-      console.log("Heanup2 DataPersistenceService: 开始加载播放列表");
 
       // 优先从AppStorage获取
       let playlistData = AppStorage.get<PlaylistData>(DataPersistenceService.KEYS.PLAYLIST);
-      console.log(`Heanup2 DataPersistenceService: 从AppStorage获取到播放列表: ${playlistData ? 'exists' : 'null'}`);
 
       if (!playlistData) {
         // 检查context是否有效
@@ -535,15 +533,12 @@ export class DataPersistenceService implements IDataPersistenceService {
 
       if (playlistData) {
         console.log(`Heanup2 DataPersistenceService: 最终加载成功,播放列表歌曲数量: ${playlistData.songs.length}`);
-        
         return playlistData;
       }
-
       console.log("Heanup2 DataPersistenceService: 没有找到播放列表数据");
       return null;
     } catch (error) {
       console.log(`Heanup2 DataPersistenceService: 加载播放列表出错: ${error}`);
-      
       return null;
     }
   }
@@ -572,7 +567,6 @@ export class DataPersistenceService implements IDataPersistenceService {
 
       // 首先保存到AppStorage(确保内存中有数据)
       AppStorage.setOrCreate(DataPersistenceService.KEYS.PLAYER_STATE, stateData);
-      console.log(`Heanup2 DataPersistenceService: 已保存播放状态到AppStorage - playing: ${state.isPlaying}, paused: ${state.isPaused}, index: ${state.currentIndex}`);
 
       // 如果context有效,尝试保存到PreferencesUtil
       if (this.context) {
@@ -583,7 +577,6 @@ export class DataPersistenceService implements IDataPersistenceService {
         while (retryCount < maxRetries) {
           try {
             PreferencesUtil.putSync(DataPersistenceService.KEYS.PLAYER_STATE, JSON.stringify(stateData));
-            console.log(`Heanup2 DataPersistenceService: 已保存播放状态到PreferencesUtil (尝试 ${retryCount + 1}/${maxRetries})`);
             break; // 成功,跳出循环
           } catch (error) {
             lastError = error;
@@ -631,7 +624,6 @@ export class DataPersistenceService implements IDataPersistenceService {
 
       // 优先从AppStorage获取
       let stateData = AppStorage.get<PlayerStateData>(DataPersistenceService.KEYS.PLAYER_STATE);
-      console.log(`Heanup2 DataPersistenceService: 从AppStorage获取到播放状态: ${stateData ? 'exists' : 'null'}`);
 
       if (!stateData) {
         // 检查context是否有效
@@ -694,8 +686,7 @@ export class DataPersistenceService implements IDataPersistenceService {
       }
 
       if (stateData) {
-        console.log(`Heanup2 DataPersistenceService: 最终播放状态加载成功 - playing: ${stateData.isPlaying}, paused: ${stateData.isPaused}, index: ${stateData.currentIndex}`);
-        
+
         return stateData;
       }
 

+ 11 - 2
entry/src/main/ets/common/service/UnifiedPlayerService.ets

@@ -1814,10 +1814,19 @@ async initialize(context: common.UIAbilityContext): Promise<void> {
     try {
       LogUtils.getInstance().LOGI('UnifiedPlayerService: Received play/pause command from widget');
       
-      const currentState = this.getCurrentState();
-      if (currentState.isPlaying) {
+      // 优先检查播放器的实际状态,而不是状态模型
+      const ijkPlayer = this.playerManager.getIjkPlayer();
+      const isActuallyPlaying = ijkPlayer ? ijkPlayer.isPlaying() : false;
+      const stateModelPlaying = this.getCurrentState().isPlaying;
+      
+      LogUtils.getInstance().LOGI(`UnifiedPlayerService: Widget playPause - StateModel: ${stateModelPlaying}, ActualPlayer: ${isActuallyPlaying}`);
+      
+      // 如果播放器实际在播放,则暂停;否则开始/恢复播放
+      if (isActuallyPlaying) {
+        LogUtils.getInstance().LOGI('UnifiedPlayerService: Player is actually playing, will pause');
         await this.pause();
       } else {
+        LogUtils.getInstance().LOGI('UnifiedPlayerService: Player is not playing, will start/resume play');
         await this.startPlayOrResumePlay();
       }