在IOS上播放声音

时间:2013-01-13 13:15:36

标签: ios xcode

我想在按下按钮时播放声音。我试过这个:

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

...导入#import <AudioToolbox/AudioToolbox.h>#import <AVFoundation/AVFoundation.h>

但由于某种原因声音没有播放。名称和类型是正确的,因为我添加到项目中的文件是“BubblePopv4.mp3”。 iPad上的音量最大,iTunes上的声音播放效果很好!有什么想法吗?

3 个答案:

答案 0 :(得分:3)

离开它,不要在新的课堂上做,简单的东西给你:

- (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];

}

答案 1 :(得分:1)

这样做:

在.h文件中:

Use this delegate - <AVAudioPlayerDelegate>

#import "AVFoundation/AVAudioPlayer.h"

AVAudioPlayer *audioPlayerObj;

NSString *filePath;

在.m文件中,在某些方法中:

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

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

并添加以下两种方法:

- (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];
}

您可以将文件名传递给此方法 - initWithFileName

然后调用playSound方法为你播放声音。

希望这有帮助。

答案 2 :(得分:0)

将url初始化替换为:

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