Нужен iOS 4 Audio API, который можно использовать как приложение тревоги - PullRequest
1 голос
/ 18 ноября 2010

Я работаю над приложением будильника, мне нужно найти лучший способ воспроизведения звука, который будет:

  • Воспроизвести зацикленный звук или предварительно зацикленный звук, когда приложение находится вфон
  • Может быть приостановлено / остановлено.Когда пользователь щелкнул, чтобы отключить будильник в предупреждении, мне нужно отключить звук
  • Отменить переключатель отключения звука (желательно)
  • Будет уважать регулятор громкости (предпочтительно)
  • Приостанавливает работу iPod (желательно)

Моими основными требованиями являются мои первые два пункта, которые я пытался использовать SystemSounds, но я не могу их остановить, как только вы скажете, чтобы он воспроизводился, пока не начнется воспроизведениезвук законченЭто, однако, работает в фоновом режиме, но не может быть зациклено.И отключается выключателем звука.

В настоящее время я использую AudioSession, чтобы игнорировать выключатель звука.Я также в настоящее время использую AVAudioPlayer, который позволяет мне управлять воспроизведением / приостановкой звука.Но не будет работать в фоновом режиме!Есть ли способ использовать AVAudioPlayer и AudioSession для воспроизведения фонового звука или мне нужно использовать что-то еще?OpenAL?

Буду признателен за любую помощь ...

Спасибо,

Пол

Ответы [ 2 ]

0 голосов
/ 19 ноября 2010

Хорошо, я изучил использование 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);

Единственное, что я до сих пор не могу сделать, - это заставить мой сигнал тревоги переопределить переключатель отключения звука, АудиоСеансы, похоже, не влияют на звук, запускаемый Audio Services.Не знаете, знает ли кто-нибудь еще, как это сделать?Еще один недостаток - отсутствие зацикливания звука, но я только что записал свой звуковой файл в аудиоредакторе:)

0 голосов
/ 18 ноября 2010

Вы не можете воспроизводить запланированные фоновые звуки самостоятельно, когда приложение находится в фоновом режиме.

Единственное, что вы можете сделать, это зарегистрировать пользовательский звук оповещения с помощью API многозадачности Apple и иметьвоспроизведение в заданный момент времени.

...