Новость из категории: Информация

Уроки iPhone SDK: Беспроблемное воспроизведение аудио с AVAudioPlayer

Уроки 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“.

Уроки iPhone SDK: Беспроблемное воспроизведение аудио с AVAudioPlayer

Добавление фреймворка 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“.

Уроки iPhone SDK: Беспроблемное воспроизведение аудио с AVAudioPlayer

Запускаем воспроизведение звука

Начинаем воспроизведение в методе “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“, уведомляющий об окончании воспроизведения аудио — например, для перехода к следующей по списку композиции.


Чувствуете, что не осилите данный материал? Тогда доверьте разработку мобильного приложения опытным специалистам. Данный шаг позволит вам сконцентрироваться на концепции, которую с максимальной точностью воплотит в жизнь команда программистов. Как результат, вы получите идеально по своему качеству и оптимизации приложение, затратив на это минимум своего времени и усилий!

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Перевести статью:

Похожие новости

Комментарии

Информация

^ Наверх