声音
在Symbian OS中,播放和操作声音是由媒体服务器处理的。 媒体服务器支持各种声音文件格式,比如 wa、au和wve,并且提供一个应用编程接口以便应用程序能够开发补充的文件格式插入式模块。 媒体服务器的客户端应用编程接口被分为三个不同的接口:音频示例编辑器,音频音调播放器和音频示例播放器。 音频示例编辑器接口提供了高级音频操作方法,可以用来录音、编辑和播放声音。 音频音调播放程序接口启动应用程序来创建和播放合成的声音。音频示例播放程序接口可用于播放样本数据文件。 媒体服务器接口的使用需要在同一线程中运行一个活动的调度程序。
对于大多数游戏来说,音频示例播放器接口提供了所有需要的特性来实现要求的音响效果。这个接口由MMdaAudioPlayerCallback和CMdaAudioPlayerUtility类组成。 MMdaAudioPlayerCallback是一个mixin类,提供回调方法来通知客户端类样本的初始化或者播放已经完成。 这就是为什么这个使用样本播放程序接口的类需要从mixin类中继承而来。 CMdaAudioPlayerUtility类提供了加载和播放样本的方法,并且可以设置播放的音量。 这个类可以仅仅和单一样本数据关联,这样一个应用程序有多少个不同的样本数据文件,它就需要创建多少CMdaAudioPlayerUtility的实例。 下面的代码是使用的CMdaAudioPlayerUtility类的示例。
∥创建一个帮本播放程序并且从一个文件装入样本 CMdaAudioPlayerUtility* samplePlayer = CMdaAudioPlayerUtility::NewFilePlayerL( KSampleFileName, *this ); ∥播放样本 samplePlayer->Play(); | 在Series 60中,每个应用程序对于每个键都有一个默认的声音。 这个声音还可以取决于这个按键事件是否是短时间、长时间或者重复按键。 Series 60应用程序用户界面类CAknAppUi提供对应用程序在资源文件中指定它们自己的按键声音效果的支持。
RESOURCE AVKON_SKEY_LIST r_example_skey_list { list = { AVKON_SKEY_INFO { key=EStdKeyLeftArrow; sid=EAvkonSIDNoSound;}, AVKON_SKEY_INFO { key=EStdKeyLeftArrow; sid=EAvkonSIDNoSound; type=ESKeyTypeLong;}, AVKON_SKEY_INFO { key=EStdKeyLeftArrow; sid=EAvkonSIDNoSound; type=ESKeyTypeRepeat;} }; } | 可用的声音标示符SIDs在avkon.hrh头文件中指定。 在游戏中,如果一个键被长时间按下,重复声音应该通过指定这个按键事件的声音标识符为EAvkonSIDNoSound来禁止。 这是因为每当一个按键重复事件接收的时候播放重复声音会消费大量处理时间。 如果一个游戏需要连续的声音,应该使用音频样本播放器来代替。
|
|