📄 symbianrecognizer.cpp
字号:
#include <apgcli.h> // RApaLsSession#include <apmrec.h> // CApaDataRecognizerType#include <apmstd.h>#include <utf.h>#include "hxresult.h"#include "hxbuffer.h"#include "recognizer.h"static TDataType GetMimeTypeL(const TDesC& fileName, const TDesC8& fileBuf){ TDataType type; RApaLsSession ls; if (ls.Connect() == KErrNone) { TDataRecognitionResult rr; ls.RecognizeData(fileName, fileBuf, rr); if (rr.iConfidence != CApaDataRecognizerType::ENotRecognized) { type = rr.iDataType; } ls.Close(); } return type;}STDMETHODIMP CHXFileRecognizer::GetMimeType(const char* pFileName, IHXBuffer* pBuffer, REF(IHXBuffer*) pMimeType){ HX_RESULT ret = HXR_FAILED; if (pBuffer && pBuffer->GetSize() > 0) { TInt err = KErrNoMemory; if (IsSDPFile(pBuffer)) { // convert descriptor MIME type to IHXBuffer pMimeType = new CHXBuffer; if (pMimeType) { pMimeType->AddRef(); int len = strlen("application/sdp"); pMimeType->Set((const UCHAR*)"application/sdp", len + 1); ((char*)pMimeType->GetBuffer())[len] = '\0'; return HXR_OK; } } // convert file name to descriptor TPtrC8 from((TUint8*)pFileName); HBufC* pUCFileName = HBufC::New(from.Length()); if (pUCFileName) { TPtr to = pUCFileName->Des(); err = CnvUtfConverter::ConvertToUnicodeFromUtf8(to, from); } if (KErrNone == err) { // convert the file buffer to a descriptor TPtrC8 fileBuf((TUint8*)pBuffer->GetBuffer(), pBuffer->GetSize()); TDataType dataType; TRAP(err, dataType = GetMimeTypeL(*pUCFileName, fileBuf)); if (KErrNone == err) { // convert descriptor MIME type to IHXBuffer pMimeType = new CHXBuffer; pMimeType->AddRef(); if (pMimeType) { TPtrC8 p = dataType.Des8(); int len = p.Length(); pMimeType->Set((const UCHAR*)p.Ptr(), len + 1); ((char*)pMimeType->GetBuffer())[len] = '\0'; ret = HXR_OK; } } } delete pUCFileName; } return ret;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -