【问题标题】:Playing sound in iOS7 don't seem to work在 iOS7 中播放声音似乎不起作用
【发布时间】:2013-10-04 09:20:41
【问题描述】:

我在 iOS7 中播放音频文件时遇到了一点问题。调用此代码时没有声音,因此无法播放音频文件:

NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"PistolShootSound" ofType:@"mp3"]];
AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
[click setVolume:1.0];
[click play];

但是没有声音出来:(

我检查了我电脑上的声音并且它工作正常,我重新检查了系统偏好中的“播放用户界面声音效果”选项,但没有用。我试过像这样打开一个 AVAudioSession:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:YES error:nil];

但这也没有用。

在 iOS7 中还有其他播放声音的方法吗?还是模拟器不再播放声音了?

【问题讨论】:

  • 代码对我来说看起来不错。你确定包含 AVAudioPlayer 的对象没有被释放吗?玩家觉得自己在玩[click playing]

标签: ios audio ios-simulator avfoundation


【解决方案1】:

试试这个..

@property (nonatomic,strong) AVAudioPlayer *click;

@synthesize click;

NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"PistolShootSound" ofType:@"mp3"]];
click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
[click setVolume:1.0];
[click preparetoPlay];
[click play];

【讨论】:

  • 不添加prepareToPlay 通常不会影响播放声音的能力。它只是最大限度地减少了调用 play 和实际声音输出之间的延迟。
  • 通过将“click”放在头文件中并使其全局生效,我认为这无关紧要,但似乎确实如此。
  • @Arbitur,感谢您接受回答。但是我的赞成票在哪里?快乐编码!
  • 记得先导入“AVFoundation.framework”。
  • 我也有同样的问题,在将播放器设置为强属性之前,它会被释放得太快而无法播放声音
猜你喜欢
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多