首页 文章

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

提问于
浏览
0

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

  • 1

    Step 1

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

    您可以使用 AVAudioPlayercurrentTime属性获取 currentTime

    您可以将值保存为NSUserDefaults以保持持久性

    您可以使用以下委托来检测应用程序非活动状态

    - (void)applicationWillResignActive:(UIApplication *)application
    

    Step 2

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

    要检测状态,您需要使用:

    - (void)applicationDidBecomeActive:(UIApplication *)application
    

    您可以设置 currentTime 属性,以便从停止播放的位置重新开始播放 .

  • -1

    将audioPlayer对象置于全局 . 当您的应用程序转到后台时,请在AppDelegate.m中添加以下代码

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
         [audioPlayer pause];
    }
    

    当您进入后台时,请在AppDelegate.m中添加以下代码

    - (void)applicationWillEnterForeground:(UIApplication *)application
    {
         [audioPlayer play];
    }
    

相关问题