#iphone #objective-c #ios #ios4 #avfoundation
#iPhone #objective-c #iOS #ios4 #avfoundation
Вопрос:
У меня есть массив аудиообъектов, называемых LocalAudio. Для воспроизведения звука я использую AVAudioPlayer
. Я реализовал метод делегирования: audioPlayerDidFinishPlaying:
, где я помещаю код для переключения следующего звука в моем массиве LocalAudio.
-(void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[self switchTrack:nextAudioIndex];
}
Звук воспроизводится в фоновом режиме, но звук не переключается. Итак, как переключить звук в фоновом режиме?
Для отладки я использую iPad 2.
Ответ №1:
Я использую ту же логику, и она работает, поэтому что-то еще должно быть неправильным.
РЕДАКТИРОВАТЬ: Пример
- (void) audioplayerdid Завершение воспроизведения: (AVAudioPlayer *) проигрыватель успешно: (BOOL) флаг { если (флаг == НЕТ) NSLog (@"Воспроизведение завершено неудачно"); [текущее время проигрывателя: 0.0]; [Фоновая версия музыкального проигрывателя]; Фоновый музыкальный проигрыватель = ноль; если (! [музыка одинакова: @ "10"]) { [self playMusicWithKey:[NSString stringWithFormat:@"%i", ([музыкальное значение] 1)] timesToRepeat:0]; } }
где
- (void) playMusicWithKey:(NSString*)Запись времени музыкальной клавиши:(NSUInteger)Запись времени { Ошибка NSError * ошибка; NSString *path = [Музыкальная библиотека objectForKey:Музыкальная клавиша]; // Инициализировать AVAudioPlayer если (backgroundMusicPlayer == ноль) { backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:путь] ошибка:amp;ошибка]; [Фоновая настройка музыкального проигрывателя: self]; [Фоновый музыкальный проигрыватель setVolume: фоновый музыкальный объем]; Музыкальная длина = фоновый музыкальный проигрыватель.продолжительность; } // Если объект backgroundMusicPlayer равен нулю, то произошла ошибка , если (!backgroundMusicPlayer) { NSLog (@"ОШИБКА SoundManager: не удалось воспроизвести музыку для клавиши '% @'", музыкальная клавиша); Возврат; } // Установите, сколько раз должна повторяться эта музыка. -1 означает никогда не останавливаться, пока его не попросят остановиться [backgroundMusicPlayer устанавливает количество циклов: время сохранения]; // Воспроизведение музыки [Фоновый музыкальный проигрыватель prepareToPlay]; [Воспроизведение фоновой музыки]; }
Комментарии:
1. Да, это так, даже заблокировано и в фоновом режиме.
Ответ №2:
Спасибо, Ваня. Я также нашел хорошее решение для людей, которые используют AVPlayer. Работает идеально: http://www.crocodella.com.br/2011/01/using-avplayer-to-play-background-music-from-library /