iOS播放系统音频的几种方式
来源:互联网 发布:linux查看centos版本 编辑:程序博客网 时间:2024/06/04 23:25
播放系统音频的几种方式
- 系统提示音的播放,有一个很方便的工具类AudioToolbox
参照这里的系统提示音id对照表
#import <AudioToolbox/AudioToolbox.h>//播放系统提示音,通过自动定义好的soundID就可以直接播放SystemSoundID soundIDTest = 1007;AudioServicesPlaySystemSound(soundIDTest);
- 这个工具类还可以播放自定义的声音文件,通过AudioServicesCreateSystemSoundID创建一个soundId就能播放
#import <AudioToolbox/AudioToolbox.h>//播放test.wav文件static SystemSoundID soundIDTest = 0;//当soundIDTest == kSystemSoundID_Vibrate的时候为震动NSString * path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];//这个path也可以是系统音频文件夹的位置//提示音音频文件位置:/System/Library/Audio/UISounds//电话音频文件位置:/Library/Ringtones//NSString * path = @"/Library/Ringtones/Waves.m4r"if (path) { AudioServicesCreateSystemSoundID( (__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundIDTest );}AudioServicesPlaySystemSound( soundIDTest );
- 用AVFoundation播放,这个有更多的控制功能,带有delegate
NSString *filePath = [mainBundle pathForResource:@"MySong"ofType:@"mp3"];//获取音频文件NSData *fileData = [NSData dataWithContentsOfFile:filePath];NSError *error = nil;//可以通过NSData初始化,也可以通过FileUrlself.audioPlayer = [[AVAudioPlayer alloc] initWithData:fileDataerror:&error];//fileUrl初始化//NSURL *url = [NSURL fileURLWithPath:filePath];//AVAudioPlayer *avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];if (self.audioPlayer != nil){ self.audioPlayer.delegate = self;if ([self.audioPlayer prepareToPlay] &&[self.audioPlayer play]){ //成功播放音乐} else {//播放失败}} else {/*无法实例AVAudioPlayer*/}#pragma mark - 播放器代理方法-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{ NSLog(@"音乐播放完成...");}
疑问
既然iOS的文件系统是有沙盒隔离的,为什么直接访问系统音频的两个系统目录却有权限?
阅读全文
0 0
- iOS播放系统音频的几种方式
- iOS 播放音频的几种方式
- 播放音频的几种方式
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 播放音频的几种方法
- iOS 音频播放的几种方法
- iOS 播放音频的几种方法
- c++和Python混合编程
- HTTP 错误 403.14
- 【LeetCode】54. Spiral Matrix
- 【怎样写代码】参数化类型 -- 泛型(八):泛型委托
- draggable属性和dataTransfer对象
- iOS播放系统音频的几种方式
- 一个PID控制理解的误区
- NewPanderKing 抬头是山,路在脚下! LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Python和R数据挖掘分析技术高级公开课在上海举行
- SteamVRPlugin1.2.1在unity5.6.x中样例场景看不到双手
- OLE使用connectiongstring中的UDL文件获取连接字符串
- 女黑客登场:轻松破解APP,共享单车任我骑!
- HTTPCLIENT超时设置
- Halcon13菜鸟 Opencv Mat 转halcon并且显示 vs2013