从IBAction方法调用时,AudioServicesPlaySystemSound声音听不到声音

时间:2013-01-31 13:45:07

标签: iphone ios objective-c audiotoolbox

我的iOS应用程序中的AudioServicesPlaySystemSound存在问题。

我有一个定义播放系统声音的方法。当我从viewDidLoad调用该方法时,我可以听到声音播放,但是当我从按钮处理程序调用它时,我听不到声音播放。

以下是我的视图控制器中的代码:

SystemSoundID startSound = 0;

-(void)playStartSound
{        
    AudioServicesPlaySystemSound(startSound);
}

-(void)viewDidLoad 
{           
    NSURL *urlStart = [[NSBundle mainBundle] URLForResource:@"Beep" withExtension:@"wav"];
    AudioServicesCreateSystemSoundID((CFURLRef)urlStart, &startSound);

    [self playStartSound];    

    [super viewDidLoad];
}

- (IBAction)start:(id)sender
{
    [self playStartSound];
}

IBAction方法与按钮相关联。当我选择按钮时,会调用pl​​ayStartSound方法,但听不到声音。

在调用dealloc方法之前,不会使用AudioServicesDisposeSystemSoundID处理系统声音。

我试过在playStartSound中调用AudioServicesCreateSystemSoundID,但它没有任何区别。

该应用程序还使用AV基础,媒体播放器,核心媒体,核心视频和核心位置。我想知道其中一个是否会干扰AudioToolbox?

更新:我只是将一个简单的应用程序放在一起,它只包含上面的代码和一个按钮,当我选择按钮时声音就会正常播放。

然后我从控制器中删除了所有视频捕获代码,现在音频播放正常。

2 个答案:

答案 0 :(得分:4)

这不起作用,因为我在我的应用程序中有一个活跃的视频捕获会话。

当存在活动视频捕获会话时,AudioServicesPlaySystemSound将无法播放。

答案 1 :(得分:0)

   NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"7777" ofType:@"mp3"];
   SystemSoundID soundID;
   AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath: soundPath]), &soundID);
   AudioServicesPlaySystemSound (soundID);

嘿试试它会播放