×
Namespaces

Variants
Actions

Звонок при помощи CTelephony

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Статья
Перевод:
Оригинал: Make call with CTelephony
truf
Последнее редактирование: hamishwillee (08 Dec 2011)

Этот пример демонстрирует выполнение телефонного звонка при помощи класса CCallDialer. Этот код будет работать только на устройствах на базе Symbian 3-й редакции.

Для использования данного примера, вам необходимо реализовать в своем классе функцию обратного вызова и создать экземпляр класса CCallDialer. Набор номера начнется автоматически после создания экземпляра. В том случае, если набор номера пройдет успешно, и удаленная сторона поднимет трубку, в функцию обратного вызова будет будет передано значение KErrNone. В противном аргумент aError будет содержать код ошибки. Чтобы при создании экземпляра класса CCallDialer передать ему экземпляр класса-слушателя, воспользуйтесь следующим примером:

iCallDialer = new (ELeave)CCallDialer(*this);
iCallDialer->ConstructL(phoneNumber);

Затем, в функции обратного вызова вы можете удалить реализующий звонок объект (перед этим вы можете проверить статус звонка):

void CBoopCtlContainer::CallDialedL(TInt aError)
{
delete iCallDialer;
iCallDialer = NULL;
}

Позднее вы можете набрать другой номер используя тот же код:

iCallDialer = new (ELeave)CCallDialer(*this);
iCallDialer->ConstructL(phoneNumber2);


MakeCall.cpp

CCallDialer::~CCallDialer()
{
Cancel();
delete iTelephony;
}
 
void CCallDialer::ConstructL(const TDesC& aNumber)
{
iTelephony = CTelephony::NewL();
CTelephony::TTelNumber telNumber(aNumber);
 
iCallParams.iIdRestrict = CTelephony::ESendMyId;
 
iTelephony->DialNewCall(iStatus, iCallParamsPckg, telNumber, iCallId);
SetActive();
}
 
CCallDialer::CCallDialer(MDialObserver& aObserver)
: CActive(EPriorityNormal),iObserver(aObserver), iCallParamsPckg(iCallParams)
{
CActiveScheduler::Add(this);
}
 
void CCallDialer::RunL()
{
iObserver.CallDialedL(iStatus.Int());
}
 
void CCallDialer::DoCancel()
{
iTelephony->CancelAsync(CTelephony::EDialNewCallCancel);
}

MakeCall.h

#include <Etel3rdParty.h>
// link to etel3rdparty.lib
 
class MDialObserver
{
public:
virtual void CallDialedL(TInt aError) = 0;
};
 
 
class CCallDialer : public CActive
{
public:
CCallDialer(MDialObserver& aObserver);
void ConstructL(const TDesC& aNumber);
~CCallDialer();
private:
void RunL();
void DoCancel();
private:
MDialObserver& iObserver;
CTelephony* iTelephony;
CTelephony::TCallId iCallId;
CTelephony::TCallParamsV1 iCallParams;
CTelephony::TCallParamsV1Pckg iCallParamsPckg;
};

Внутренние ссылки

This page was last modified on 8 December 2011, at 14:07.
71 page views in the last 30 days.
×