使用System Sound Services播放wav文件 & 解释何为__bridge CFURLRef
来源:互联网 发布:怎么观看淘宝直播 编辑:程序博客网 时间:2024/06/04 18:54
iOS开发 使用System Sound Services播放音频文件
http://www.pocketdigi.com/20121017/927.html
System Sound Services只能播放不越过30秒的声音,且支持格式只有wav,没有提供操纵声音和控制音量的功能,一般只用于播放通知。
12345678
SystemSoundID soundId; //后面将使用soundId引用音频文件 NSString *soundFile=[[NSBundle mainBundle] pathForResource:@"aaa" ofType:@"wav"]; //通过NSBundle的 mainBundle方法返回一个NSBundle对象,该对象对应当前应用程序可执行二进制文件所属目录。pathForResource方法获取aaa.wav的真实路径。 AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundFile], &soundId); //创建soundFile的SystemSoundID,(__bridge CFURLRef)是强制转换成CFURLRef对象,因为此处要将一个c语言的结构转换为Objective-c对象,所以必须加上__bridge AudioServicesPlaySystemSound(soundId); //播放音频 System Sound Services不能播放越过30秒的声音,且只支持wav
---------下面这段解释来自 http://blog.csdn.net/weiwangchao_/article/details/8108170
这里代码尝试把一个NSURL指针强制转换为一个CFURLRef指针。这里涉及到一些Core Services特别是Core Foundation(CF)的东西,AudioServicesCreateSystemSoundID()函数接受CFURLRef为参数,这是一个CF的概念,但是我们在较高的抽象层级上所建立的是NSURL对象。在Cocoa框架中,有很多顶层对象对底层的抽象,而在使用中我们往往可以不加区别地对这两种对象进行同样的对待,这类对象即为可以”自由桥接”的对象(toll-free bridged)。NSURL和CFURLRef就是一对好例子,在这里其实CFURLRef和NSURL是可以进行替换的。
通常来说为了代码在底层级上的正确,在iOS开发中对基于C的API的调用所传入的参数一般都是CF对象,而Objective-C的API调用都是传入NSObject对象。因此在采用自由桥接来调用C API的时候就需要进行转换。但是在使用ARC编译的时候,因为内存管理的原因,编译器需要知道对这些桥接对象要实行什么样的操作。如果一个NSURL对象替代了CFURLRef,那么在作用区域外,应该由谁来决定内存释放和对象销毁呢?为了解决这个问题,引入了bridge,bridge_transfer和__bridge_retained三个关键字。关于选取哪个关键字做转换,需要由实际的代码行为来决定。 0 0
- 使用System Sound Services播放wav文件 & 解释何为__bridge CFURLRef
- 使用AudioToolbox Framwork中的System Sound Services播放声音
- 音频播放(System Sound Services、MPMusicPlayerController、AVAudioplayer) for IOS
- IOS开发音频播放之System Sound services
- 一个vc++ direct sound播放wav文件的类
- iOS 开发 初级:Audio之 System Sound Services的使用
- 使用libao播放wav文件
- iOS系统声音服务(System Sound Services)
- android:使用audiotrack 类播放wav文件
- 使用WaveOut接口播放WAV文件
- 使用Audio Player来播放wav文件
- 使用WaveOut接口播放WAV文件
- android:使用audiotrack 类播放wav文件
- 播放wav文件
- 播放WAV文件
- 播放WAV文件
- python 播放wav文件
- 播放 wav 文件
- GBS分床结果展示
- 南阳oj 单词拼接 欧拉回路
- POJ 1775 sum of Factorial (数论)
- POJ_3414_BFS pots
- Merge Sorted Array
- 使用System Sound Services播放wav文件 & 解释何为__bridge CFURLRef
- 这天气昭示着喝啤酒的季节到 了
- Ejabberd优化
- jquery validate自定义验证方法
- Javascript教程:AngularJS的五个超酷特性
- 如何使用reshape包进行数据汇总
- 最好的母亲节礼物
- Windows7下python环境变量配置
- 循环链表