1

AppDelegate を使用して、通知に応答します。

applicationWillResignActiveおよびapplicationDidBecomeActive

メイン ルーチンでは、上記の呼び出しがそれぞれsaveAudioStaterestoreAudioStateをトリガーします。これらは AudioPlayer の状態を取得し、中断から戻ったときに再開します。これは、電話の割り込みには問題なく機能しますが、ホームボタンを押した場合には機能しません.

ホーム ボタンの場合、currentTime と currentAudioItem の値は無効です。

- (void) saveAudioState {
    currentAudioItem = musicPlayer.nowPlayingItem;
    currentTime = musicPlayer.currentPlaybackTime;
    NSLog(@"Playback state %d", musicPlayer.playbackState);
    NSLog(@"Time %f", currentTime);
    NSLog(@"Track %@", currentAudioItem);
    audioWasPlaying = NO;
    if (musicPlayer.playbackState == MPMusicPlaybackStatePlaying) {
        audioWasPlaying = YES;
        [musicPlayer pause];
    }
}

- (void) restoreAudioState {
    // Restore the now-playing item and its current playback time.
    musicPlayer.nowPlayingItem          = currentAudioItem;
    musicPlayer.currentPlaybackTime     = currentTime;

    // If the music player was playing, get it playing again.
    if (audioWasPlaying && currentAudioItem) {
        [musicPlayer play];
    }
}

これは iOS のバグなのか、それとも物事が壊れてしまった結果なのか?

iOS 5.1 および 5.1.1 でテストしました。

4

0 に答える 0