在Xcode中循环音频

JSA*_*986 4 xcode objective-c avaudioplayer ios

我在我的应用程序中播放声音,我想循环播放.我对此的研究并没有完全解决我的问题.

我的代码.m

CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"ar4", CFSTR 
                                          ("wav"), NULL);


UInt32 soundID;
AudioServicesCreateSystemSoundID (soundFileURLRef, &soundID);
AudioServicesPlaySystemSound (soundID);
Run Code Online (Sandbox Code Playgroud)

我想我需要把这样的东西放进去

numberOfLoops = -1;
Run Code Online (Sandbox Code Playgroud)

但不确定如何在我的代码中实现,因为我收到numberOfLoops的未声明错误.一些建议将非常感谢

Baz*_*nga 11

这样的事情应该可以解决你的问题:

    NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
    resourcePath = [resourcePath stringByAppendingString:@"/YOURMUSICNAME.mp3"];
    NSLog(@"Path to play: %@", resourcePath);
    NSError* err;

    //Initialize our player pointing to the path to our resource
    player = [[AVAudioPlayer alloc] initWithContentsOfURL:
                 [NSURL fileURLWithPath:resourcePath] error:&err];

    if( err ){
        //bail!
        NSLog(@"Failed with reason: %@", [err localizedDescription]);
    }
    else{
        //set our delegate and begin playback
        player.delegate = self;
        [player play];
        player.numberOfLoops = -1;
        player.currentTime = 0;
        player.volume = 1.0;
    }
Run Code Online (Sandbox Code Playgroud)

然后,如果你想阻止它:

[player stop];
Run Code Online (Sandbox Code Playgroud)

或暂停:

[player pause];
Run Code Online (Sandbox Code Playgroud)

并将其导入头文件中:

#import <AVFoundation/AVFoundation.h>.   
Run Code Online (Sandbox Code Playgroud)

你应该在你的标题中声明它,然后合成它.

//.h并添加粗体部分:

@interface ViewController:UIViewController < AVAudioPlayerDelegate > {

AVAudioPlayer *player;
}
@property (nonatomic, retain) AVAudioPlayer *player;
Run Code Online (Sandbox Code Playgroud)

//.m

@synthesize player;
Run Code Online (Sandbox Code Playgroud)