2015-09-22 1 views
1

Я использую XCode 7 с iOS 9, и я пытаюсь воспроизвести звук. Я работаю в поисках решения в течение нескольких дней, и я пробовал все возможные решения там, и ничего не работает.Objective-C не может воспроизводить звук с помощью AVAudioPlayer

Вот мой код

.h

#import <AudioToolbox/AudioToolbox.h> 
#import <AVFoundation/AVFoundation.h> 

@interface ViewController : UIViewController <DTDeviceDelegate, AVAudioPlayerDelegate> 
{ 

} 

и вот мой .m файл:

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"autumn_leaves" ofType:@"m4a"]; 

    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 

    NSError *error; 

    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL 
                    error:&error]; 
    player.numberOfLoops = -1; //Infinite 

    [player play]; 

, ни звука, ни ошибок, ни предупреждений ничего вообще

soundFilePath и soundFileURL не nil, sa меня с игроком они заселяют. Мой телефон громче, чем может быть.

Я также попытался в .m файл:

@property(strong, nonatomic) AVAudioPlayer *player; 

self.myPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileURL error:&error]; 
[self.myPlayer play]; 

Также не воспроизводить звук и без ошибок.

Вот скриншот из папки Мои ресурсы:

enter image description here

Пожалуйста, помогите!

ответ

0

Вам необходимо установить делегат для себя до [воспроизведения плеера];

player.delegate = self; 
[player play]; 
+0

Я просто попробовал это, до сих пор нет звука. – user979331

3

Определите AVAudioPlayer как свойство, и оно должно работать. Вы можете реализовать AVAudioPlayerDelegate, если хотите, это не обязательно.

Для детального объяснения проверить этот ответ https://stackoverflow.com/a/8415802/1789203

@interface ViewController() 
@property (nonatomic,strong)AVAudioPlayer *player; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"bush_god_bless" ofType:@"wav"]; 

    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 

    NSError *error; 

    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL 
                    error:&error]; 
    self.player.numberOfLoops = 0; //Infinite 
    self.player.delegate = self; 
    [self.player play]; 


} 
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
    NSLog(@"%d",flag); 
} 
+0

Я считаю, что числоOfLoops = 0 означает воспроизведение раз. Если вы хотите бесконечного воспроизведения, так что любое отрицательное число, как описано здесь Apple, https://developer.apple.com/reference/avfoundation/avaudioplayer/1386071-numberofloops – saintjab