Objective-C无法使用AVAudioPlayer

时间:2015-09-22 01:53:38

标签: ios objective-c xcode audio avaudioplayer

我正在使用XCode 7和iOS 9,我正试图播放声音。我已经谷歌搜索解决方案好几天了,我已经尝试了所有可能的解决方案,没有任何工作。

这是我的代码

·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];

没有声音,没有错误,没有任何警告

soundFilePathsoundFileURL不是nil,与玩家相同,他们正在填充。我的手机音量尽可能大。

我也试过.m文件:

@property(strong, nonatomic) AVAudioPlayer *player;

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

也没有播放声音也没有错误。

以下是我的资源文件夹的屏幕截图:

enter image description here

请帮助!

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

你需要在[玩家玩]之前将委托设置为自己;

player.delegate  = self;
[player play];