音频在iPhone模拟器中播放效果不错,但在iPhone中则不然

时间:2010-06-16 15:12:46

标签: iphone audio ios-simulator

我有一个应用程序即将完成,但遇到了烦人的问题。在应用程序中,我想在点击某个对象时播放声音,然后该对象消失。这是我使用的代码片段:

在Object.h中

#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioServices.h>

@interface Object: UIView {
    UIImageView *image;
    CGPoint location;
    SystemSoundID soundFileID;
}

在Object.m中

- (void)initWithSound {
    //a bunch of code to define the image and location
    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"caf"];
    CFURLRef soundURL = (CFURLRef)[NSURL fileURLWithPath:soundPath];
    AudioServicesCreateSystemSoundID(soundURL, &soundFileID);
    return self;
}

然后在我的mainViewController中,将根据用户的操作创建多个对象,并将其添加到具有不同图像的不同位置的屏幕上。点击对象本身后,它会产生声音并消失。

在Object.m中

- (void)tapped {
    AudioServicesPlaySystemSound(soundFileID);
    image.image = nil;
    [self removeFromSuperview];
}

一切都可以在模拟器中找到。但是当我在iPhone中尝试时,对象会在按预期点击时消失,但声音不会播放。试过3G和3GS,两者都不播放声音。我认为这应该有效。我犯了什么错误吗?谢谢你的帮助。

编辑:想想我不知道与否相关的事情。我还使用麦克风来检测AVAudioRecorder用户输入的声音。不确定这是否会影响音频输出。

1 个答案:

答案 0 :(得分:2)

终于找到了问题所在!!

事实证明,我必须设置音频会话。就是这样!显然我需要更多关于音频和视频的研究。

对于可能遇到与我相同情况的人,这是我在viewDidLoad方法中添加的代码:

AVAudioSession * audioSession = [AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error: &error];

[audioSession setActive:YES error: &error];