Symbian中音频API的运用
2010-07-22 01:41:00 来源:WEB开发网}
}
// 播放结束了
void CMyObserver::MaoscPlayComplete(TInt aError)
{
if(aError != KErrNone)
{
iOutputStream->Stop();
}
}
*/
四. CMdaAudioRecorderUtility
就如同这个类的字面意思一样,这个类可以提供录音功能,但是它也提供了播放功能。如果我们只需要播放,那么使用之前介绍的CMdaAudioPlayerUtility类要节约资源一点。
录音可以发生于文件,描述符。(虽然提供了OpenUrlL()方法,但是和CMdaAudioPlayerUtility一样,OpenUrlL()方法是不被支持的)
录音基本分为3个步骤:
1.打开数据存储的句柄 2.设定参数 3.录音
其中 打开数据存储的句柄 和 录音 都是异步操作的,MMdaObjectStateChangeObserver::MoscoStateChangeEvent(CBase *aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)方法通知应用程序每一个操作的事件。
CMdaAudioRecorderUtility * iSound = CMdaAudioRecorderUtility::NewL(aMyObserver);
...
// recording message settings
TMdaPcmWavCodec iMessageCodec;
iMessageCodec.iBits = TMdaPcmWavCodec::E16BitPcm;
...
TMdaAudioDataSettings iMessageSettings;
iMessageSettings.iCaps = TMdaAudioDataSettings::ESampleRateFixed | TMdaAudioDataSettings::ESampleRate8000Hz | TMdaAudioDataSettings::EChannelsMono;
iMessageSettings.iSampleRate = 8000;
iMessageSettings.iChannels = 1;
...
TMdaFileClipLocation iMessageLocation;
iMessageLocation.iName = _L("e:\data\yourmes.wav");
...
TMdaWavClipFormat iMessageFormat;
...
iSound->OpenL(&iMessageLocation, &iMessageFormat, &iMessageCodec, &iMessageSettings); /* 这是个异步方法,当打开资源的操作完成后会调用 MMdaObjectStateChangeObserver::MoscoStateChangeEvent(CBase *aObject, TInt
更多精彩
赞助商链接