【问题标题】:Stopping a System Sound from playing停止播放系统声音
【发布时间】:2014-04-25 18:08:51
【问题描述】:

我可以使用以下方法关闭我的音频播放器:

- (IBAction)sndOnOff:(id)sender {

    if (_sndBtn.selected == NO) {

        [_sndBtn setSelected:YES];
        [audioPlayer stop];
        }
        else{

        [_sndBtn setSelected:NO];
        [audioPlayer play];
    }

但是如何关闭我创建的系统声音?

 NSURL *soundURL1 = [[NSBundle mainBundle] URLForResource:@"selectSound"
                                            withExtension:@"wav"];
 AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL1, &sound2);

【问题讨论】:

  • 当您处于不想播放声音的状态时,您就不能避免播放声音吗?您不应该更改设备设置,也不能这样做。
  • 我不是在讽刺,我只是想提供帮助。确实,您不应该通过更改设备上的音量来使应用程序中的声音静音。如果您允许用户切换声音,则没有理由不能在播放声音之前插入检查。如果您将声音播放集中到一个班级,那么这项检查可以在一个地方完成。
  • 那我该怎么做呢?

标签: ios objective-c cocoa-touch avaudioplayer


【解决方案1】:

我们无法很好地控制系统声音是有原因的 - 因为它应该是短的(在 iOS 中

但你可以这样做:

AudioServicesDisposeSystemSoundID (sound2);

阻止它。但这意味着您需要使用以下命令再次创建声音:

AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL1, &sound2);

再玩一遍:

AudioServicesPlaySystemSound(sound2);

您当然可以改为在AVPlayer 上播放“系统声音”并像播放歌曲一样停止它,但这首先意味着它“不应该是”系统声音。希望这会有所帮助。

【讨论】:

  • 问题是游戏开始时声音也会加载!
  • @Jking 提供更多关于如何加载游戏和声音的信息,这将有助于我们进一步帮助您。显示调用顺序。
【解决方案2】:

就这样吧……

    AudioServicesDisposeSystemSoundID (sound2);

我想不出任何负面后果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多