Как зациклить звук на определенном контроллере вида - PullRequest
1 голос
/ 25 марта 2012
-(void)viewDidAppear:(BOOL)animated

{
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"Intro",
                                              CFSTR ("wav"), NULL);
    UInt32 soundID;
    AudioServicesCreateSystemSoundID (soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound (soundID);
}

Я начинающий с этим. Я пытаюсь воспроизвести файл WAV на фоне контроллера представления. Первоначально я сделал 30-секундный wav-файл, он не воспроизводился, я уменьшил длину аудиофайла до 10 секунд, и он прекрасно воспроизводится на контроллере вида. У меня вопрос, как зациклить этот аудиофайл и / или воспроизвести более длинный аудиофайл. Также остановится ли звук, когда я покину контроллер вида.

Я использую xCode 4.3 Я запускаю приложение на iPhone4 & 4s (iOS 5.1)

Заранее спасибо ...

1 Ответ

5 голосов
/ 25 марта 2012

Документация Apple гласит

http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/SystemSoundServicesReference/Reference/reference.html

Вы можете использовать System Sound Services для воспроизведения коротких (30 секунд или короче) звуков. Интерфейс не обеспечивает управление уровнем, позиционированием, зацикливанием или синхронизацией и не поддерживает одновременное воспроизведение: вы можете воспроизводить только один звук за раз. Вы можете использовать System Sound Services для предоставления звуковых оповещений. На некоторых устройствах iOS оповещения могут включать вибрацию.

Поэтому при использовании системных звуков петля недоступна.

Вы можете проверить этот урок http://mobileorchard.com/easy-audio-playback-with-avaudioplayer/

- (void)viewDidLoad {
[super viewDidLoad];

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;

if (audioPlayer == nil)
    NSLog([error description]);
else
    [audioPlayer play];

}

В нем говорится, что если вы установите для свойства numberOfLoops отрицательное число, аудиоплеер будет бесконечно зацикливаться

И не забудьте добавить фреймворк AVFoundation в свой проект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...