0

我正在尝试使用 AVAudioPlayer 播放声音但没有成功。我在 iOS 模拟器和我的 iPhone 上都试过了。我没有收到任何错误,但我也没有听到任何声音。

这是我的代码:

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: @"RiggerSound_Click" ofType: @"wav"];
    NSLog( @"Path is %@", soundFilePath );

    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];

    NSError *error;
    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error];
    [fileURL release];

    if (newPlayer != nil)
    {
        if( ![newPlayer play] )
            NSLog( @"Error playing" );

        [newPlayer release];
    }
    else
        NSLog(@"Error creating audioPlayer: %@", [error localizedDescription]);

soundFilePath 是“/Users/myname/Library/Application Support/iPhone Simulator/6.1/Applications/E50059DD-B328-45C7-A5D5-C650F415B183/appname.app/RiggerSound_Click.wav”。

“newPlayer”变量不为空,[newPlayer play] 不会失败。

文件“RiggerSound_Click.wav”显示在我项目的 Resources 文件夹中。我可以在项目中选择它,点击播放按钮,然后听到声音。

我难住了。

谢谢你的帮助。

4

2 回答 2

0

在播放前设置 AVAudioPlayer 的代理。例如,

newPlayer.delegate = self;

此外,请确保您的代理类符合 AVAudioPlayerDelegate 协议:

MyClass : Superclass <AVAudioPlayerDelegate>
于 2013-08-25T19:01:24.733 回答
-1

只需将 AVAudio Player 定义为静态

static AVAudioPlayer *newPlayer = Nil;
if(newPlayer == Nil)
{
     newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error];
}

而已

于 2014-02-14T10:41:03.537 回答