Проблеми с AVAudioPlayer

Аз съм нов в разработката на iPhone.

Искам да възпроизведа звук, когато се докосне UIButton. Опитах следното:

ViewController.h:

@interface JahrenzeitenViewController : UIViewController <AVAudioPlayerDelegate> {

    UIButton *button_PlaySound;
    AVAudioPlayer *audioPlayer;
}

@property (nonatomic, retain) IBOutlet UIButton *button_PlaySound;

ViewController.m

- (IBAction)playSound {

    //[audioPlayer release];
    //audioPlayer = nil;

    NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
    NSURL *audioFileURL = [NSURL fileURLWithPath:audioFilePath];
    NSError *error = nil;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];
    [audioPlayer setDelegate:self];
    [audioPlayer prepareToPlay];
    [audioPlayer play];
    if (audioPlayer == nil) 
        NSLog(@"Error playing sound. %@", [error description]);
    else
        [audioPlayer play];

Ако се опитам да стартирам приложението, получавам следната грешка:

Недефинирани символи за архитектура i386: "_OBJC_CLASS_$_AVAudioPlayer", цитиран от: objc-class-ref в JahrenzeitenViewController.o ld: символ(и) не е намерен(и) за архитектура i386 collect2: ld върна 1 изходен статус

Опитах се и да сменя линията

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];

to

audioPlayer = [audioPlayer initWithContentsOfURL:audioFileURL error:&error];

Тогава не получавам грешката по-горе, но все още не се възпроизвежда и получавам DebugMessage от моя NSLog в метода „playSound“:

Грешка при възпроизвеждане на звук. (НУЛА)

Надявам се, че можете да ми помогнете. Благодаря ви предварително :)


person Kevin Glier    schedule 21.03.2011    source източник


Отговори (4)


Трябва да добавите рамката AVFoundation към вашия проект. (щракнете с десния бутон върху основната си цел, след което добавете съществуваща рамка).

person Jilouc    schedule 21.03.2011
comment
Хм, в .h-файла са импортираните за това мисля (забравих да ги публикувам): #import ‹UIKit/UIKit.h› #import ‹AVFoundation/AVAudioPlayer.h› #import ‹AudioToolbox/AudioToolbox.h› Това ли имахте предвид? - person Kevin Glier; 21.03.2011

Да добавя към другите отговори.

Винаги трябва да гледате документацията на клас 'I.e AVAudioPlayer. С което не сте запознати, когато възнамерявате да го използвате. В горната част на документацията (Справка за клас) за класа има таблица, показваща към коя рамка принадлежи класът:

въведете описание на изображението тук

След като знаете това, добавете рамката към проекта. И също така го импортирайте в заглавния (.h) файл, както посочиха други

person markhunte    schedule 21.03.2011

благодаря, проработи. Не знаех, че трябва да добавя Framework :S

Използвах следните инструкции:

  1. В навигатора на проекти изберете вашия проект
  2. Изберете вашата цел
  3. Изберете раздела „Фази на изграждане“.
  4. Отворете разширителя „Свързване на двоични файлове с библиотеки“.
  5. Щракнете върху бутона „+“.
  6. Изберете вашата рамка
person Kevin Glier    schedule 21.03.2011

Моля, добавете рамката AVFoundation към вашия проект. И мисля, че трябва да добавите <AVFoundation/AVFoundation.h> заедно с <AudioToolbox/AudioToolbox.h>

person visakh7    schedule 21.03.2011