AVAudioPlayer返回成功,但设备没有声音

时间:2012-09-21 14:15:06

标签: objective-c avaudioplayer

我有一个非常简单的应用程序,我已经构建来测试AVAudioPlayer。我有一个16s aif文件,在我的Mac上播放得很好。把它放在一个简单的应用程序中,然后在我的iPhone上运行但没有声音。向对象发送'play'会返回成功,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");

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:0)

您是否检查过错误是否有任何结果?

if(error) {
    NSLog( @"%@", [error localizedDescription] );
}