您的位置:首页 - 教程 - IOS - 正文
iOS开发-音效的使用

音频我们简易的分为两种,既音效和音频。

1.音效:是有声音制造而成,主要用于加强对于对声音的处理。在用户使用app的时候加入音效,无疑是用户体验的加分项。

2.音乐:音乐的播放时间一般比较长,比如游戏中无限循环的背景音乐。

我们在使用音频的时候需要用到两个框架

1.AVFoundation.framework

2.AudioToolbox.framework

由于AVFoundation比较强大这里就先介绍一下AudioToolbox框架

音效播放常见函数总结
//加载音效文件
AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)
 
//释放音效资源
AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
 
//播放音效
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)

//播放音效带点震动

AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

使用时需要注意,为了到达省电的目的,硬件的解码只能对一个音频文件进行解码。

下面来介绍一下AVFoundation框架

音乐播放用到一个叫做AVAudioPlayer的类
AVAudioPlayer常用方法
//加载音乐文件
- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
- (id)initWithData:(NSData *)data error:(NSError **)outError;
 
//准备播放(缓冲,提高播放的流畅性)
- (BOOL)prepareToPlay;

//播放(异步播放)

- (BOOL)play;

//暂停
- (void)pause;
 
//停止
- (void)stop;
 
//是否正在播放
@property(readonly, getter=isPlaying) BOOL playing;
 
//时长
@property(readonly) NSTimeInterval duration;
 
//当前的播放位置
@property NSTimeInterval currentTime;
 
//播放次数(-1代表无限循环播放,其他代表播放numberOfLoops+1次)
@property NSInteger numberOfLoops;
 
//音量
@property float volume;

//是否允许更改速率

@property BOOL enableRate;

//播放速率(1是正常速率,0.5是一般速率,2是双倍速率)
@property float rate;

//有多少个声道

@property(readonly) NSUInteger numberOfChannels;

//声道(-1是左声道,1是右声道,0是中间)
@property float pan;
 
//是否允许测量音量
@property(getter=isMeteringEnabled) BOOL meteringEnabled;
 
//更新测量值
- (void)updateMeters;

//获得当前的平均音量

- (float)averagePowerForChannel:(NSUInteger)channelNumber;

AVFoundation.framework和AudioToolbox.framework的常用方法就是这些了

开发中具体怎样使用这两个框架比较好,就仁者见仁,智者见智了。

随着时代的前进,OC成为历史只是时间问题了。面对swift的强势来袭,起初国内的大牛们只是持观望状态,

但是随着swift2.0的到来,这种趋势已经势不可挡了。最为一名优秀的开发者,同时掌握多个开发语言是刚需。

最为一名优秀的iOS开发者,同时掌握OC和swift也是刚需。


评论: