2010-07-16 2 views
2

Мне нужно воспроизвести некоторые спорадические звуковые эффекты на фоне приложения для iPhone. Из всего, что я прочитал и испытал с iOS 4, я могу сохранить приложение в фоновом режиме, пока я запускаю GPS, указав «местоположение» в качестве фонового режима. Это действительно работает. Но порой я хочу играть в звуковой эффект ... другими словами, это не «непрерывный» звук, на который я ссылаюсь.Воспроизведение звуковых эффектов во время фонового режима

Но приложение работает, поэтому почему я не могу просто использовать AVAudioPlayer для воспроизведения некоторых звуковых эффектов? Будет ли работать другой звуковой API?

GAHHH!

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"BEEP" ofType:@"aiff"]; 
NSURL *fileURL = [[[NSURL alloc] initFileURLWithPath: soundFilePath] autorelease]; 

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; 

player.volume = 1.0; 
[player prepareToPlay]; 

// play 
[player play]; 
+0

Дополнительная информация об этом? Я установил соответствующие ключи в plist, и я вижу в отладчике, что выполняется вызов для воспроизведения аудиофайла. Я также установил аудио-сессию для AVAudioSessionCategoryPlayback и вызвал сессию активным, используя [[AVAudioSession sharedInstance] setActive: YES error: & activationError]; Нет радости. – user531912

+0

У меня точно такая же проблема:/Любая идея или обходной путь? :( – yonel

+0

Я могу запустить его, увидеть изменения в моем ответе – yonel

ответ

0

Я думаю, что важно уточнить, что ваше приложение не работает в фоновом режиме. Скорее, ваше приложение «спать». Значение фонового процесса info.plist, которое вы укажете, указывает ОС, что оно должно пробудить ваше приложение и позволить ему отвечать на определенные типы событий. Из Apple Documentation

Each of the preceding values [audio, location, voip] lets the system know that your application should be woken up at appropriate times to respond to relevant events.

В вашем случае, ваше приложение замораживается и только в состоянии реагировать на тип события, который вы укажете (местоположение или GPS).

Вы не даете понять, в каком контексте этот код находится, поэтому на данном этапе вам сложно сказать, почему звук не воспроизводится. Кроме того, вам необходимо убедиться, что ваше приложение работает в фоновом режиме для указанной цели. Если вы используете механизм location и не используете GPS в своем приложении, вы можете отклонить его при отправке приложения.

Вы также можете обратиться к Checklist for Supporting Multitasking, чтобы убедиться, что структура вашего приложения соответствует их требованиям.

+0

В чем это дело? Я звоню в AVAudioPlayer из функции, которую я * знаю *, работает, показывает журналы. – ZaBlanc

+0

Я должен добавить свое приложение на самом деле делать GPS, это приложение для навигации. Я хочу запускать звуковые эффекты, когда вы приближаетесь к определенным достопримечательностям. – ZaBlanc

-1

Ответ заключается в том, что он не будет работать с AVAudioPlayer. Вместо этого используйте API AudioServicesPlaySystemSound.

+0

Я использовал API AudioServicesPlaySystemSound и получал точно такой же beahvior:/NSString * soundPath = [[NSBundle mainBundle] pathForResource: @ "mySound" ofType: @ "aiff"]; \t SystemSoundID soundId = 1024; \t NSURL * url = [NSURL URLWithString: soundPath]; \t AudioServicesCreateSystemSoundID ((CFURLRef) url, (SystemSoundID *) и soundId); \t AudioServicesPlaySystemSound (soundId); – yonel

0

[EDIT] У вас есть хороший пример воспроизведения фона, контролируя положение GPS здесь:

http://www.informit.com/articles/article.aspx?p=1646438&seqNum=5

И он использует AudioToolbox вместо AVAudioPlayer

мне удалось сделайте это, используя AVAudioPlayer.

Вы также добавили значение audio в info.plist для ключа ?

Смежные вопросы