我有一个在应用程序中连续播放的声音文件。我想要的是当我的应用程序进入后台时,我的音频文件应该暂停,当我的应用程序进入前台时,我的音频文件应该开始播放。我想要的情况是,如果我的音频文件为 4 分钟并且正在播放,并且当前播放时间为 2 分钟,然后应用程序在后台运行 1 分钟,那么我的音频文件现在应该从 3 分钟开始播放,而不是从 2暂停的分钟。
我不想使用功能的后台模式。有没有其他方法可以做到这一点?我的代码如下:
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath],soundFile]];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
audioPlayer.numberOfLoops =-1;
audioPlayer.volume=0.5f;
if (audioPlayer == nil)
NSLog(@"error playing file.");
else
[audioPlayer play];
最佳答案
第一步
当您的应用程序进入后台或进入非事件状态时,您需要保存当前播放时间。
你可以得到currentTime
通过使用 currentTime AVAudioPlayer
的属性(property)
您可以将值保存到 NSUserDefaults为了坚持
您可以使用以下委托(delegate)来检测应用程序的非事件状态
- (void)applicationWillResignActive:(UIApplication *)application
第二步
当您激活时,您可以从
NSUserDefaults
检索数据并使用它,您可以从音乐停止的那一刻开始播放它。为了检测状态,您需要使用:
- (void)applicationDidBecomeActive:(UIApplication *)application
您可以设置
currentTime
用于从停止播放的位置重新开始播放的属性。
关于ios - 当应用程序回到前台时如何播放声音文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606824/