我有一个声音文件在应用程序中连续播放。我想要的是当我的应用程序进入后台我的音频文件应该暂停,当我的应用程序进入前台时,我的音频文件应该开始播放。我想要的是什么情况,如果我的音频文件是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];
答案 0 :(得分:1)
第1步
当您的应用程序进入后台或进入非活动状态时,您需要保存当前播放时间。
您可以使用currentTime
AVAudioPlayer
您可以将值保存到NSUserDefaults以保持持久性
您可以使用以下委托来检测应用程序非活动状态
- (void)applicationWillResignActive:(UIApplication *)application
第2步
当您激活时,您可以从NSUserDefaults
检索数据并使用它从音乐停止时开始播放。
要检测状态,您需要使用:
- (void)applicationDidBecomeActive:(UIApplication *)application
您可以设置currentTime
属性,以便从您停止播放的位置重新开始播放。
答案 1 :(得分:-1)
将audioPlayer对象置于全局。 当您的应用程序转到后台时,请添加以下代码 在AppDelegate.m中
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[audioPlayer pause];
}
当您进入后台时,请在AppDelegate.m中添加以下代码
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[audioPlayer play];
}