ПРОГРАММИРОВАНИЕ ПОД IPHONE, IPAD OBJECTIVE-C часть 3

17. Работа со звуком

Простой проигрыватель звуков

В уроке Синглтон (Singleton) я рассказал о том, что чаще всего синглтон применятся для воспроизведения звуков. Сейчас я покажу как это делать. Для начала создадим проект на базе шаблона View-based Application и назовем его MySoundPlayer.

 

В первую очередь добавим в проект новый класс, который и будет воспроизводить звуки. Я назвал класс SoundPlayer. Далее я привел код с этого класса.

 

SoundPlayer.h

<code data-result="[object Object]">#import &lt;AudioToolbox/AudioServices.h&gt;

@interface SoundPlayer : NSObject {

}

+ (void)playSound:(NSString*)soundName;

@end</code>

 

SoundPlayer.m

<code data-result="[object Object]">#import "SoundPlayer.h"

@implementation SoundPlayer

+ (void)playSound:(NSString*)soundName {
    SystemSoundID volleyFile;
    NSString *volleyPath = [[NSBundle mainBundle] pathForResource:soundName ofType:nil];
    CFURLRef volleyURL = (CFURLRef ) [NSURL fileURLWithPath:volleyPath];
    AudioServicesCreateSystemSoundID (volleyURL, &amp;volleyFile);
    AudioServicesPlaySystemSound(volleyFile);
}

@end</code>

 

Как я уже писал, знак плюс перед именем метода означает, что это метод класса, то есть, инициализировать объект класса для вызова этого метода не нужно. В интерфейсе класса я подключил библиотеку AudioServices с фреймверка AudioToolbox. Добавьте этот фреймверк в проект.

 

А теперь по-подробнее об этом проигрывателе. Это низкоуровневый проигрыватель. Для того, чтобы воспроизвести файл достаточно пяти строчек кода. Это очень удобно и легко, но в то же время это накладывает некоторые ограничения:

 

  • проигрыватель не воспроизводит файлы *.mp3, *.waw;
  • существует ограничение на размер файла (3,6 Мб);
  • если файл проигрывается — его невозможно остановить;
  • невозможно установить уровень громкости.

 

Это те ограничения, которые я знаю, если я ошибаюсь — можете меня поправить.

 

Теперь, учитывая первое ограничение — приступим к процессу конвертирования музыки. Возмите любой (небольшой) *.mp3 файл и скопируйте его на рабочий стол. Предположим, что этот файл будет иметь имя example.mp3. Теперь открываем терминал и вводим следующую строку (вместое userName подставте имя вашей учетной записи):

 

/usr/bin/afconvert -f caff -d LEI16 /Users/userName/Desktop/example.mp3 /Users/userName/Desktop/example.caf

 

После нажатия на кнопку Enter на рабочем столе должен появится файл с именем example.caf. Этот файл и добавьте в проект. Для его проигрывания внесем изменения в реализацию класса MySoundPlayerViewController, а именно в метод viewDidLoad (перед этим не забудьте импортировать класс SoundPlayer):

 

<code data-result="[object Object]">- (void)viewDidLoad
{
    [super viewDidLoad];

    [SoundPlayer playSound:@"correct.caf"];
}</code>

 

Теперь при открытии программы будет воспроизведен добавленный вами звуковой файл. Сам метод воспроизведения можно вызывать в любом месте (вы можете поместить его в обработку нажатия кнопки). Так же, вы можете добавить сколько угодно файлов и проигрывать их в любом порядке.

 

Исходный код этого прокта можно скачать здесь.

Comments are closed.