Alessandro
Alessandro

Reputation: 4110

Playing sounds on IOS

I want to play a sound when a button is pressed. I tried this:

-(void)PlayClick
{
NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                           pathForResource:@"BubblePopv4"
                                           ofType:@"mp3"]];
AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
[click play];
}

…and imported #import <AudioToolbox/AudioToolbox.h> and #import <AVFoundation/AVFoundation.h>

but for some reason the sound is not playing. The name and type are right because the file I added to the project is "BubblePopv4.mp3". The volume on the iPad is on maximum, and the sound plays fine on iTunes! Any ideas?

Upvotes: 3

Views: 9738

Answers (3)

Reno Jones
Reno Jones

Reputation: 1979

Leave it, Don't do it in a new Class, simple stuff for you:

- (void)playSoundWithOfThisFile:(NSString*)fileNameWithExtension {

    // Eg - abc.mp3
    AVAudioPlayer *audioPlayerObj;

    NSString *filePath;

    filePath= [[NSString stringWithFormat:@"%@", [[NSBundle mainBundle] resourcePath]] retain];

    if(!audioPlayerObj)
        audioPlayerObj = [AVAudioPlayer alloc];

        NSURL *acutualFilePath= [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",filePath,fileNameWithExtension]];

        NSError *error;

        [audioPlayerObj initWithContentsOfURL:acutualFilePath error:&error];

        [audioPlayerObj play];

}

Upvotes: 3

Basem Saadawy
Basem Saadawy

Reputation: 1818

Replace url initialization with:

NSURL* musicFile = [NSURL initFileURLWithPath:[[NSBundle mainBundle]
                                              pathForResource:@"BubblePopv4"
                                              ofType:@"mp3"]];

Upvotes: 0

Reno Jones
Reno Jones

Reputation: 1979

Do this:

In .h file:

Use this delegate - <AVAudioPlayerDelegate>

#import "AVFoundation/AVAudioPlayer.h"

AVAudioPlayer *audioPlayerObj;

NSString *filePath;

In .m file , In some method:

   filePath= [[NSString stringWithFormat:@"%@", [[NSBundle mainBundle] resourcePath]] retain];

    if(!audioPlayerObj)
        audioPlayerObj = [AVAudioPlayer alloc];

And add these two methods:

- (id)initWithFileName:(NSString*)fileNameWithExtension {

    if ((self = [super init])) {

        NSURL *acutualFilePath= [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",filePath,fileNameWithExtension]];

        NSError *error;

        [audioPlayerObj initWithContentsOfURL:acutualFilePath error:&error];

    }
    return self;
}

- (void)playSound {
    [audioPlayerObj play];
}

You can pass the filename to this Method - initWithFileName

and then call playSound method to play sound for you.

Hope this helps.

Upvotes: 1

Related Questions