主要提供以下了几种播放音频的方法:
1. System Sound Services
System Sound Services是最底层也是最简单的声音播放服务,调用 AudioServicesPlaySystemSound 这个方法就可以播放一些简单的音频文件,使用此方法只适合播放一些很小的提示或者警告音,因为它有很多限制:
■ 声音长度要小于 30 秒
■ In linear PCM 或者 IMA4 (IMA/ADPCM) 格式的
■ 打包成 .caf, .aif, 或者 .wav 的文件
■ 不能控制播放的进度
■ 调用方法后立即播放声音
■ 没有循环播放和立体声控制
另外,它还可以调用系统的震动功能,方法也很简单。具体的代码可以参考官方的示例 ;//默认只播放一次
3、播放位置
player.currentTime =15.0;//可以指定从任意位置开始播放
4、声道数
NSUInteger channels= player.numberOfChannels;//只读属性
5、持续时间
NSTimeInterval duration =player.duration;//获取持续时间
6、仪表计数
player.meteringEnabled =YES;//开启仪表计数功能
[playerupdateMeters];//更新仪表计数
三、播放声音
[player prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
[playerplay];//播放
[playerstop];//停止
四、代理方法
这个类对应的AVAudioPlayerDelegater的委托方法。audioPlayerDidFinishPlaying:successfully:当音频播放完成之后触发。当播放完成之后,可以将播放按钮的文本重新回设置成:Play Audio File
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
//播放结束时执行的动作
[audioButton setTitle:@"PlayAudio File" forState:UIControlStateNormal];
}
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)playererror:(NSError *)error;
{
//解码错误执行的动作
}
- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player;
{
//处理中断的代码
}
audioPlayerEndInterruption:,当程序被应用外部打断之后,重新回到应用程序的时候触发。在这里当回到此应用程序的时候,继续播放音乐。
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player
{
[audioPlayer play];
}