我正在制作报警应用程序,我需要找到播放声音的最佳方法:
我的主要要求是我的前两点,尝试使用SystemSounds但是我似乎无法阻止这些,一旦你告诉它播放它播放直到声音结束。然而,这在后台工作,但不能循环。并且被静音开关静音。
目前使用AudioSession忽略静音开关。我目前还在使用AVAudioPlayer,它允许我控制声音的播放/暂停。但是不会在后台工作!有没有办法使用AVAudioPlayer和AudioSession播放背景声音还是我需要使用别的东西? OpenAL的?
任何帮助都将非常感激......
谢谢,
保
答案 0 :(得分:0)
当应用程序在后台时,您无法自己播放预定的背景声音。
您可以做的唯一事情是使用Apple的多任务API注册自定义警报声音,并在预定义的时间点播放。
答案 1 :(得分:0)
好的,我研究过使用AudioServices并使用了以下代码:
// Use SystemSound API's
NSURL *alarmSound = [[NSBundle mainBundle] URLForResource:alarm.alarmTone withExtension:@"wav"];
soundFileURLRef = (CFURLRef) [alarmSound retain];
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);
AudioServicesPlayAlertSound(soundFileObject);
[alarmSound release];
这在后台听起来很好听,AudioServicesPlayAlertSound也会触发振动,这是一个奖励。虽然你实际上无法停止声音,但我设法通过处理声音对象来阻止声音
AudioServicesDisposeSystemSoundID(soundFileObject);
我唯一不能做的就是让我的闹钟铃声覆盖静音开关,音频会话似乎对音频服务触发的音频没有任何影响。不知道是否还有人知道如何实现这一目标?另一个缺点是没有声音循环,但我刚刚在音频编辑器中循环我的声音文件:)