Уроки iPhone SDK: Беспроблемное воспроизведение аудио с AVAudioPlayer
Представленный в iPhone SDK фреймворк “AVFoundation” включает “AVAudioPlayer” — простое многофункциональное решение для воспроизведения аудиофайлов на базе Objective-C.
В этом уроке мы познакомимся с его работой, создав простое приложение, циклически воспроизводящее MP3 аудиофайл после запуска.
Источник/Github
Код к уроку можно получить на GitHub: клонируйте его из репозитория или загрузите zip-архив.
Создание проекта
Запустив Xcode, создайте новое приложение на основе представления с именем AudioPlayer:
1. Командой “File > New Project…” из меню Xcode создайте новый проект.
2. В разделе “iPhone OS > Application” выберите “View-based Application“.
3. Присвойте проекту имя “AudioPlayer” и щелкните на кнопке “Save“.
Добавление фреймворка AVFoundation
Чтобы задействовать класс “AVAudioPlaye“, необходимо добавить к проекту фреймворк “AVFoundation“.
1. На относящейся к проекту панели “Groups & Files” разверните группу “Targets“.
2. Правой кнопкой мыши или удерживая нажатой клавишу , щелкните на элементе AudioPlayer.
3. Выберите “Add > Existing Frameworks…“.
4. Внизу слева (под опцией “Linked Libraries“) щелкните на кнопке “+“.
5. Выберите “AVFoundation.framework” и щелкните на кнопке “Add“.
6. Теперь “AVFoundation.framework” появится в разделе “Linked Libraries“. Закройте окно.
Следующим шагом импортируем заголовочные файлы “AVFoundation” в файл интерфейса контроллера представления и настроим экземпляр переменной “AVAudioPlayer“:
1. На относящейся к проекту панели “Groups & Files” разверните группу “AudioPlayer“.
2. Разверните папку “Classes“.
3. Выделив файл “AudioPlayerViewController.h“, отредактируйте его.
4. Обновите файл. Изменения выделены черным:
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface AudioPlayerViewController : UIViewController {
AVAudioPlayer *audioPlayer;
}
@endДобавление аудиофайла
Для воспроизведения нам понадобится аудиофайл. Не претендуя на особую оригинальность, назовем его “audiofile.mp3“. Добавьте файл к проекту:
1. На относящейся к проекту панели “Groups & Files” щелкните на папке “Resources” правой кнопкой мыши или удерживая нажатой клавишу .
2. Из появившегося контекстного меню выберите “Add > Existing Files…“.
3. Найдите и выделите импортируемый файл, щелкните на опции “Add“.
4. Установите флажок “Copy items into destination group’s folder (if needed)” и подтвердите кнопкой “Add“.

Запускаем воспроизведение звука
Начинаем воспроизведение в методе “ViewDidLoad“:
1. Откомментируйте шаблон метода “ViewDidLoad“.
2. Обновите его, как показано ниже. Изменения выделены черным.
- (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];
}“AVAudioPlayer” инициализируется URL-ссылкой, поэтому создадим ссылку, указывающую на аудиофайл в локальной папке с ресурсами. Если для аудиоплейера свойство “numberOfLoops” сделать отрицательным числом, файл будет воспроизводиться бесконечно. Настроив плейер, запускаем воспроизведение, отправив объекту соответствующее сообщение.
Не забудьте освободить “audioPlayer” в методе “dealloc“. Изменения показаны черным.
- (void)dealloc {
[audioPlayer release];
[super dealloc];
}Дополнительные возможности
Регулируется громкость плейера, проверяется /настраивается время воспроизведения, предусмотрены остановка и пауза:
audioPlayer.volume = 0.5; // 0.0 – нет звука; 1.0 полная громкость
NSLog(@"%f seconds played so far", audioPlayer.currentTime);
audioPlayer.currentTime = 10; // перейти к 10-секундной отметке
[audioPlayer pause];
[audioPlayer stop]; // не восстанавливает "currentTime"; возобновляет воспроизведениеПомимо прочего, можно внедрить протокол “AVAudioPlayerDelegate“, уведомляющий об окончании воспроизведения аудио — например, для перехода к следующей по списку композиции.
Чувствуете, что не осилите данный материал? Тогда доверьте разработку мобильного приложения опытным специалистам. Данный шаг позволит вам сконцентрироваться на концепции, которую с максимальной точностью воплотит в жизнь команда программистов. Как результат, вы получите идеально по своему качеству и оптимизации приложение, затратив на это минимум своего времени и усилий!