【问题标题】:Stop Playing Audio when come back to View Controller in iOS返回 iOS 中的 View Controller 时停止播放音频
【发布时间】:2015-06-18 05:34:44
【问题描述】:

我正在我的应用中播放播放列表中的音频。我在 viewDidLoad 函数中使用以下代码:-

    NSURL *url = [NSURL URLWithString:FeedLink];
    NSData *_objectData = [NSData dataWithContentsOfURL:url];
    NSError *error;

    audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error];
    audioPlayer.delegate = self;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    audioPlayer.numberOfLoops =  0;

在“播放”按钮上,它会播放音频,并且在后台或我去其他班级时也可以正常播放。

问题是当我回到这个视图控制器并选择另一个音频时,之前的播放音频没有停止。并且两者都在同时播放。

任何人都可以帮助我,当我从另一个视图控制器返回 viewDidLoad 时,它会停止播放音频并且一次只播放一个。提前致谢

【问题讨论】:

    标签: ios objective-c iphone audio avfoundation


    【解决方案1】:

    在播放任何音频文件之前,请检查是否正在播放任何音频文件。

    为此添加以下代码。

    if(audioPlayer.isPlaying){
    [audioPlayer stop];
    }
    

    然后在播放下一个音频文件之后。

    【讨论】:

    • 感谢您的回复。我试过了,但从来没有出现过这种情况。我认为每次它都会创建一个新实例。我不知道问题出在哪里。
    • 设置断点并查看 audioPlayer 对象中是否存在内存
    • 对不起@Nilesh,我不知道如何检查对象的内存。
    • 我已经在上面添加了有问题的代码。每次我回来查看音频的控制器 url 时都会更改并播放新的音频。但前一个也在玩新的。
    • 我已经更新了我的答案,用我的代码替换你的代码,看看它在你最后是否有效..
    【解决方案2】:

    在您正在播放音频的课程的视图中,使用下面的代码。然后当您回到该课程时播放停止。

    -(void)viewwillappear{
        [audioPlayer stop];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多