当应用程序回到前台时如何播放声音文件?

时间:2014-05-12 10:39:28

标签: ios audio background

我有一个声音文件在应用程序中连续播放。我想要的是当我的应用程序进入后台我的音频文件应该暂停,当我的应用程序进入前台时,我的音频文件应该开始播放。我想要的是什么情况,如果我的音频文件是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];

2 个答案:

答案 0 :(得分:1)

第1步

当您的应用程序进入后台或进入非活动状态时,您需要保存当前播放时间。

您可以使用currentTime

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];
}