0

我的 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 方法与一个按钮相关联。当我选择按钮时,将调用 playStartSound 方法,但听不到声音。

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

我尝试从 playStartSound 中调用 AudioServicesCreateSystemSoundID,但没有任何区别。

该应用程序还使用 AV Foundation、Media Player、Core Media、Core Video 和 Core Location。我想知道其中之一是否会干扰 AudioToolbox?

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

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

4

2 回答 2

4

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

当有活动的视频捕获会话时,AudioServicesPlaySystemSound 将不会播放。

于 2013-01-31T21:43:41.743 回答
0
   NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"7777" ofType:@"mp3"];
   SystemSoundID soundID;
   AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath: soundPath]), &soundID);
   AudioServicesPlaySystemSound (soundID);

嘿试试这样它会玩

于 2013-01-31T14:27:38.500 回答