iOS开发--音乐文件播放工具类的封装(包含了音效的封装)
2016-06-13 22:18
681 查看
一.头文件
#import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> @interface ChaosAudioTool : NSObject #pragma mark - 播放音乐 // 播放音乐 musicName : 音乐的名称 + (AVAudioPlayer *)playMusicWithMusicName:(NSString *)musicName; // 暂停音乐 musicName : 音乐的名称 + (void)pauseMusicWithMusicName:(NSString *)musicName; // 停止音乐 musicName : 音乐的名称 + (void)stopMusicWithMusicName:(NSString *)musicName; #pragma mark - 音效播放 // 播放声音文件soundName : 音效文件的名称 + (void)playSoundWithSoundname:(NSString *)soundname; @end
二..m文件方法的实现
#import "ChaosAudioTool.h" @implementation ChaosAudioTool static NSMutableDictionary *_soundIDs; static NSMutableDictionary *_players; + (void)initialize { _soundIDs = [NSMutableDictionary dictionary]; _players = [NSMutableDictionary dictionary]; } + (AVAudioPlayer *)playMusicWithMusicName:(NSString *)musicName { assert(musicName); // 1.定义播放器 AVAudioPlayer *player = nil; // 2.从字典中取player,如果取出出来是空,则对应创建对应的播放器 player = _players[musicName]; if (player == nil) { // 2.1.获取对应音乐资源 NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:musicName withExtension:nil]; if (fileUrl == nil) return nil; // 2.2.创建对应的播放器 player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileUrl error:nil]; // 2.3.将player存入字典中 [_players setObject:player forKey:musicName]; // 2.4.准备播放 [player prepareToPlay]; } // 3.播放音乐 [player play]; return player; } + (void)pauseMusicWithMusicName:(NSString *)musicName { assert(musicName); // 1.取出对应的播放 AVAudioPlayer *player = _players[musicName]; // 2.判断player是否nil if (player) { [player pause]; } } + (void)stopMusicWithMusicName:(NSString *)musicName { assert(musicName); // 1.取出对应的播放 AVAudioPlayer *player = _players[musicName]; // 2.判断player是否nil if (player) { [player stop]; [_players removeObjectForKey:musicName]; player = nil; } } #pragma mark - 音效的播放 + (void)playSoundWithSoundname:(NSString *)soundname { // 1.定义SystemSoundID SystemSoundID soundID = 0; // 2.从字典中取出对应soundID,如果取出是nil,表示之前没有存放在字典 soundID = [_soundIDs[soundname] unsignedIntValue]; if (soundID == 0) { CFURLRef url = (__bridge CFURLRef)[[NSBundle mainBundle] URLForResource:soundname withExtension:nil]; if (url == NULL) return; AudioServicesCreateSystemSoundID(url, &soundID); // 将soundID存入字典 [_soundIDs setObject:@(soundID) forKey:soundname]; } // 3.播放音效 AudioServicesPlaySystemSound(soundID); } @end
相关文章推荐
- iOS开发,音效的播放简单实现以及音效播放的简单封装
- iOS进阶收藏
- IOS开发多线程 - 多线程的简单介绍
- iOS音频播放、录音、视频播放、拍照、视频录制
- iOS开发--录音简单实现
- 关于Legacy Bios和EFI Bios的区别
- iOS日志输出宏
- Mac、Xcode快捷键——附截图
- iOS开发,系统自带的分享简单实现
- iOS 打包上传-22421错误
- ios图片压缩
- 基于IOS平台的游戏之打地鼠
- iOS开发(第三方使用)——百度地图鹰眼轨迹SDK接入
- iOS开发:==、isEqual与isEqualToString判断是否相等
- iOS_高效开发之道
- 基于IOS平台的游戏之小拼图
- [置顶] iOS开发——布局框架Masonry的介绍与使用
- ios获取所有相册的视频并播放
- iOS App集成Apple Pay教程(附示例代码)
- iOS中的内边距是什么