Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Как получить SIP URI входящего звонка VOIP

From Wiki
Jump to: navigation, search
Article Metadata

Статья
Перевод:
truf
Последнее редактирование: hamishwillee (09 Dec 2011)

Класс CTelephony не поддерживает VoIP звонки. Поэтому вы не можете использовать NotifyCall и GetCallInfo чтобы определить входящего VoIP звонка и получить номер звонящего. Решением в этой ситуации может служить использование Logengine для получения VoIP SIP URI входящего звонка.

Это демонстрирует следующий пример:

Подключите заголовочные файлы

#include <LogCli.h>
#include <LOGWRAP.H>
#include <LogViewChangeObserver.h>
#include <LOGVIEW.H>
#include <eikenv.h>

Подключите следующие библиотеки

logcli.lib logwrap.lib eikcore.lib
  • 2. Добавьте в предки класса класс MLogViewChangeObserver и реализуйте его виртуальные функции:
    • HandleLogViewChangeEventAddedL
    • HandleLogViewChangeEventChangedL
    • HandleLogViewChangeEventDeletedL
  • 3. Объявите следующие члены класса:
CLogClient* iClient;
CLogEvent* iLogEvent;
CLogViewEvent* iLogViewEvent;
CLogFilter* iLogFilter;
  • 4. В ConstructL() добавьте:
// Создаем объекты LogClient, Logevent, Logfilter, Logviewevent
// используем уже созданную RFs сессию, вместо того, чтобы создать новую
iClient=CLogClient::NewL(CEikonEnv::Static()->FsSession(),CActive::EPriorityHigh);
iLogEvent=CLogEvent::NewL();
iLogViewEvent = CLogViewEvent::NewL(*iClient,*this);
iLogFilter = CLogFilter::NewL();
 
// Установим фильтр по типу события: звонок
iLogFilter->SetEventType(KLogCallEventTypeUid);
 
//Установим фильтр, исключающий все вызовы,
//кроме пропущенных
TBuf<20> string;
iClient->GetString(string,R_LOG_DIR_MISSED);
iLogFilter->SetDirection(string);
iLogViewEvent->SetFilterL(*iLogFilter,iStatus);
SetActive();
  • 5. HandleLogViewChangeEventAddedL вызывается, когда в лог добавляется событие, удовлетворяющее заданному фильтру.
void CNotifyCall::HandleLogViewChangeEventAddedL(TLogId aId, 
TInt /*aViewIndex*/, TInt /*aChangeIndex*/, TInt /*aTotalChangeCount*/)
{
// Получим событие по его id
// aId содержит Id добавляемого в систему события
 
iLogEvent->SetId(aId);
 
//Получим событие
iClient->GetEvent(*iLogEvent,iStatus);
SetActive();
}
  • 6. В RunL() добавьте следующее:
//В случае обычного телефонного звонка, Number содержит номер звонящего
TBuf<128> callNameBuf=iLogEvent->Number();
CEikonEnv::InfoWinL(_L("Incoming call Number"),callNameBuf);
 
// Remote party содержит voip sip uri звонящего
callNameBuf.Copy(iLogEvent->RemoteParty());
CEikonEnv::InfoWinL(_L("Remote party"),callNameBuf);
This page was last modified on 9 December 2011, at 02:04.
202 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×