Symbian中音频API的运用
2010-07-22 01:41:00 来源:WEB开发网在symbian中,除了使用插件架构(MMF)将文件格式匹配适当的编解码器,还可以在处理原始音频数据时,明确选择需要的编解码器。
Symbian中依靠实用类来完成基本的音频任务的,用观察器来获取播放或录音事件。
Clients using any of the CMdaAudioRecorderUtility, CMdaAudioConvertUtility or CMdaAudioPlayerUtility classes must have an active scheduler running in their thread because the implementations use active objects and callbacks.
一. CMdaAudioToneUtility
用来播放音频声音。音频声音可以是正xuan波,双音多频(DTMF),电话按键音等。
使用方法如下:
CMdaAudioToneUtility * iAudioToneUtility = CMdaAudioToneUtility::NewL(MyObserver, NULL);
...
iAudioToneUtility->PrepareToPlayTone(2000, /*aDuration*/3000000); /* 这里 2000代表将播放的音调的频率,3000000表示将播放3000000微秒(3秒钟)。*/
PrepareToPlayTone方法是异步的,当准备完成后,框架将调用MMdaAudioToneObserver::MatoPrepareComplete(TInt aError)方法。在这之间我们可以调用iAudioToneUtility->CancelPrepare()方法,这样观察器就无法接受到MatoPrepareComplete通知了。
我们在MatoPrepareComplete(TInt aError)方法中进行如下处理:
void CMyObserver::MatoPrepareComplete(TInt aError)
{
if(aError != KErrNone)
{
iAudioToneUtility->CancelPlay();
}
else{
iAudioToneUtility->SetVolume(iAudioToneUtility->MaxVolume()/3);
iAudioToneUtility->SetBalanceL(KMMFBalanceMaxLeft); // 设置平衡。默认是KMMFBalanceCenter
iAudioToneUtility->SetRepeats(2, 1000000); /* 设置多重复的次数,注意是多重复的次数,而不是重复的次数,所以这里就代表在播放完第一次之后还要继续重复两次,并且这三次重复播放之间的间隔是 1000000微秒 */
iAudioToneUtility->SetVolumeRamp(500000); /* Defines the period over which the volume level is to rise smoothly from nothing to the normal volume level.*/
iAudioToneUtility->Play(); /*
更多精彩
赞助商链接