3

我有一个非常简单的应用程序,用于测试 AVAudioPlayer。我有一个 16 秒的 aif 文件,可以在我的 Mac 上正常播放。把它放在一个简单的应用程序中并在我的 iPhone 上运行,但没有声音。向对象发送“播放”返回成功,并且 audioPlayerDidFinishPlaying 在 16 秒后返回成功。还是没有声音。已经检查了 iPhone 上的音量,没问题。已检查以确保我的 AVAudioPlayer 对象的音量设置为 1.0 - 确实如此。有人可以帮忙吗?

这是我的代码

NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"Soothing" ofType:@"aif"];
NSURL *playURL = [NSURL fileURLWithPath:soundPath];
NSError *error;

self.myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playURL error:&error];
NSLog(@"About to play sound");

self.myAudioPlayer.delegate = self;
[self.myAudioPlayer prepareToPlay];
bool success = [self.myAudioPlayer play];

if (!success) {
    NSLog(@"Failed to play file");
} else NSLog(@"Looks like it succeded");
4

2 回答 2

8

好的 - 明白了。我没有为我的应用程序配置 AVAudioSession。做了一些非常简单的事情如下(从Apple的示例代码中复制):

[[AVAudioSession sharedInstance] setDelegate: self];
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];
if (setCategoryError)
    NSLog(@"Error setting category! %@", setCategoryError);

声音现在开始播放了——加上学到了很多关于如何通过屏幕锁定等来控制播放的知识,这将是很有价值的。

于 2012-09-21T15:34:19.337 回答
0

你检查过你是否从错误中得到任何东西吗?

if(error) {
    NSLog( @"%@", [error localizedDescription] );
}
于 2012-09-21T15:00:31.867 回答