MPMusicPlayerController currentPlaybackTime在歌曲开始时未初始化

时间:2018-06-13 21:23:36

标签: ios avaudiosession mpmusicplayercontroller

当我尝试使用systemMusicPlayer播放原始99美分DRM歌曲之一时,currentPlaybackTime未初始化为零。尽管如此,这首歌从一开始就开始了。在这种情况下,除非在播放此DRM歌曲时发生第二次异常,否则我不在乎是否存在这种差异。这种异常现象是即使没有来电,我也会收到音频系统中断(AVAudioSessionInterruptionTypeBegan)。所以我一直试图想出一个修复来忽略中断,以便音乐能够播放。我的kludgey修复是检查currentPlaybackTime。如果它接近于零,则必须是此DRM异常。所以,我有两个问题不利于我。

我发现了StackOverflow上currentPlaybackTime的第一个问题的另一个问题,但它似乎并没有始终如一地工作。

以下是我正在使用的代码:

[self setMusicPlayer: [MPMusicPlayerController systemMusicPlayer]];
[musicPlayer setQueueWithQuery: songToPlayNext];
musicPlayer.currentPlaybackTime = 0.0;
[musicPlayer play];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
                    while(true) {
                        if (musicPlayer.currentPlaybackTime != 0.0) {
                            musicPlayer.currentPlaybackTime = 0.0;
                            break;
                        }
                    }
                    NSLog(@"In Media Controller: musicplayer (%@) time finally set to zero. time=%f", musicPlayer, musicPlayer.currentPlaybackTime);
                    [musicPlayer play];
                });

当这段代码执行时,它将突破while(true)循环,但是当NSLog语句触发时,currentPlaybackTime通常不为零。

关于强制currentPlaybackTime为零或防止传入呼叫中断发生的替代方法的任何建议?

0 个答案:

没有答案