我正在使用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];
没有声音,没有错误,没有任何警告
soundFilePath
和soundFileURL
不是nil
,与玩家相同,他们正在填充。我的手机音量尽可能大。
我也试过.m文件:
@property(strong, nonatomic) AVAudioPlayer *player;
self.myPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileURL error:&error];
[self.myPlayer play];
也没有播放声音也没有错误。
以下是我的资源文件夹的屏幕截图:
请帮助!
答案 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];