如何在“振铃和警报音量”级别播放声音

时间:2011-09-12 01:51:43

标签: iphone ios cocoa-touch avaudioplayer

在我的应用程序中,我希望在“振铃和警报音量”级别上发出警报/通知。

换句话说,在音量级别上使用电话铃声或闹钟(首选项/声音/铃声和警报)。它与系统音量级别不同,后者随音量按钮而变化。

它的播放时间也应超过30秒。

我知道这是可能的,因为一些时钟应用程序可以做到这一点。

更新: 好的,我发现了一个不理想的解决方案。如果使用AudioServicesCreateSystemSoundID并加载我自己的声音文件(aif,wav等没有mp3或其他压缩音频)而不是它的工作原理。 唯一的问题是它必须是30秒或更短,但我可以把它切成30秒的片断然后一块一块地播放。

在静音开关上它不起作用对我来说是个问题。

代码:

    SystemSoundID mySound;
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("mySound"), CFSTR("aif"), NULL), &mySound);
    AudioServicesPlaySystemSound(mySound);

我怀疑OpenAL应该这样做。有没有人有一个简单的例子,它加载aif / wav文件并在iPhone上播放。我发现了一些复杂的例子,但我只需要播放并停止声音(即使它正在泄漏,这很好)。

2 个答案:

答案 0 :(得分:3)

我自己发现了。我必须使用AudioServicesCreateSystemSoundID并加载我自己的声音文件(aif,wav等没有mp3或其他压缩音频) 唯一的问题是它必须是30秒或更短,但我可以把它切成30秒的片断然后一块一块地播放。

在开启静音开关时不起作用

代码:

    SystemSoundID mySound;
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("mySound"), CFSTR("aif"), NULL), &mySound);
    AudioServicesPlaySystemSound(mySound);

答案 1 :(得分:0)

你应该研究一下AVAudioPlayer类。它允许您播放任何持续时间的声音文件,您可以控制您希望播放的指定文件的音量输出。我不在我的Mac前面,否则我会提供代码。如果您需要进一步的指导,请告诉我。