iOS SDK:AVAudioPlayer在后台播放音乐,切换视图保持重叠

时间:2012-04-01 23:41:49

标签: ios

  

可能重复:
  iOS SDK : playing music on the background and switching views

我正在尝试在我的应用程序中播放音乐。音乐工作正常,但在切换viewControllers并返回主菜单后,音乐再次播放!这意味着几个相同的声音一起播放!我该如何解决这个问题呢?

firtview.h

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController : UIViewController{

AVAudioPlayer *theAudio;
}
@end

firstview.m

- (void)viewDidLoad
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"GENIEAPP" ofType:@"mp3"];
theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.numberOfLoops = -1;




[super viewDidLoad];

1 个答案:

答案 0 :(得分:1)

你可能在这里有一些问题,首先当视图加载你正在播放声音时,现在我不知道你是否试图解除视图viewController的视图,但是当你这样做时,你可能不会发布并停止声音,所以你正在泄漏AVAudioPlayer,因为你没有释放并停止播放音频播放器,当你回到视图控制器并重新开始播放时你重新分配播放器...不确定你的意图是什么,但如果它们是只有在分配了视图控制器时播放声音,那么你应该在dealloc方法或appripriate,停止avaudioplayer并解除分配...如果你试图通过应用程序播放你的声音然后你需要分配其他球员...... 看看你的评论,这样的事情可能会对你有所帮助

-(void)viewDidLoad
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"GENIEAPP" ofType:@"mp3"];
    if(!theAudio){
        theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

        theAudio.numberOfLoops = -1;
        [theAudio play];
    }
    else
    {
        //stop the sound and play it again
        [theAudio stop];
        [theAudio play];
    }
}