<转>iOS开发拓展篇—封装音频…
来源:互联网 发布:手机提速软件 编辑:程序博客网 时间:2024/05/17 04:58
iOS开发拓展篇—封装音频文件播放工具类
一、简单说明
1.关于音乐播放的简单说明
(1)音乐播放用到一个叫做AVAudioPlayer的类
(2)AVAudioPlayer常用方法
加载音乐文件
- (id)initWithContentsOfURL:(NSURL*)url error:(NSError **)outError;
- (id)initWithData:(NSData *)dataerror:(NSError **)outError;
准备播放(缓冲,提高播放的流畅性) - (BOOL)prepareToPlay;
播放(异步播放)- (BOOL)play;
暂停 - (void)pause;
停止- (void)stop;
是否正在播放 @property(readonly,getter=isPlaying) BOOL playing;
时长 @property(readonly)NSTimeInterval duration;
当前的播放位 @property NSTimeIntervalcurrentTime;
播放次数(-1代表无限循环播放,其他代表播放numberOfLoops+1次 @property NSIntegernumberOfLoops;
音量 @property float volume;
是否允许更改速率@property BOOLenableRate;
播放速率(1是正常速率,0.5是一般速率,2是双倍速率) @property float rate;
有多少个声道 @property(readonly) NSUIntegernumberOfChannels;
2.播放多个音乐文件
说明:如果要播放多个音乐文件,那么最傻瓜的做法是,创建多个全局的播放器去播放对应的音乐文件,但是这种方法无法适用于需要播放的文件数量巨大的情况。
//
//
//
//
//
//
//
#import
#import
@interface YYAudioTool : NSObject
+(BOOL)playMusic:(NSString *)filename;
+(void)pauseMusic:(NSString *)filename;
+(void)stopMusic:(NSString *)filename;
@end
YYAudioTool.m文件
//
//
//
//
//
//
//
#import "YYAudioTool.h"
@implementation YYAudioTool
static NSMutableDictionary *_musices;
+(NSMutableDictionary *)musices
{
}
+(BOOL)playMusic:(NSString *)filename
{
}
+(void)pauseMusic:(NSString *)filename
{
}
+(void)stopMusic:(NSString *)filename
{
}
@end
测试程序:
在storyboard中拖拽控件,并进行连线,以做控制。
导入可供播放的音乐素材。
测试程序的代码设计如下:
//
//
//
//
//
//
//
#import "YYViewController.h"
#import "YYAudioTool.h"
@interface YYViewController ()
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
- (IBAction)next;
//用一个数组来保存所有的音乐文件
@property(nonatomic,strong)NSArray *songs;
//用一个int型的属性来记录当前的索引
@property(nonatomic,assign)int currentIndex;
@end
@implementation YYViewController
#pragma mark-懒加载
-(NSArray *)songs
{
}
- (void)viewDidLoad
{
}
- (IBAction)play {
}
- (IBAction)pause {
}
- (IBAction)stop {