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

标签 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];

最佳答案

第一步

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

你可以得到currentTime通过使用 currentTime AVAudioPlayer 的属性(property)

您可以将值保存到 NSUserDefaults为了坚持

您可以使用以下委托(delegate)来检测应用程序的非事件状态

- (void)applicationWillResignActive:(UIApplication *)application

第二步

当您激活时,您可以从 NSUserDefaults 检索数据并使用它,您可以从音乐停止的那一刻开始播放它。

为了检测状态,您需要使用:
- (void)applicationDidBecomeActive:(UIApplication *)application

您可以设置currentTime用于从停止播放的位置重新开始播放的属性。

关于ios - 当应用程序回到前台时如何播放声音文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606824/

相关文章:

android - 如何缩放按钮的背景?

iOS:以编程方式将 UINavigationBar 添加到 UITableView

android - VS 2015 Enterprise 的所有iOS 和Android 开发能力都在Win 8.1 中可用吗?

iphone - 如何在应用每启动三次后显示弹出窗口?

c++11 - 将rtpL16数据放入本地文件|如何检查文件是否符合预期?

audio - 使用openAL禁用环绕声

iphone - Iphone SDK:播放 “system sound”

css - 背景颜色在较小的分辨率下被削减

background - 如何通过归档改变桌面背景?

iphone - 单击按钮删除后 TableView 删除