当前位置: 动力学知识库 > 问答 > 编程问答 >

ios - Looping .wav file

问题描述:

I am making an alarm app for iPhones and want to continuously loop the audio until the button is pressed again. As of now all it does is play the audio once when pressed. Here's the code:

-(IBAction)PlayAudioButton:(id)sender {

AudioServicesPlaySystemSound(PlaySoundID);

}

- (void)viewDidLoad {

NSURL *SoundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"wav"]];

AudioServicesCreateSystemSoundID((__bridge CFURLRef)SoundURL, &PlaySoundID);

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

Any suggestions?

网友答案:

Use AVAudioPlayer to play the sound. You must add AVFoundation.framework to your project for this to work. Start by declaring an AVAudioPlayer object. It must be declared either as a property with a strong attribute, e.g.

@property (strong, nonatomic) AVAudioPlayer *audioPlayer;

or as an instance variable with a __strong attribute

@interface Class : SuperClass //or @implementation Class
{
    AVAudioPlayer __strong *audioPlayer;
}

Then, to load and play the file,

- (void)viewDidLoad
{
    NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"wav"];
    NSURL *audioFileURL = [NSURL fileURLWithString:audioFilePath];
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:nil];
    audioPlayer.numberOfLoops = -1; //plays indefinitely
    [audioPlayer prepareToPlay];
}


- (IBAction)PlayAudioButton:(id)sender
{
    if ([audioPlayer isPlaying])
        [audioPlayer pause]; //or "[audioPlayer stop];", depending on what you want
    else
        [audioPlayer play];
}

and, when you want to stop playing the sound, call

[audioPlayer stop];
分享给朋友:
您可能感兴趣的文章:
随机阅读: