Звонок при помощи CTelephony
Метаданные
Статья
Этот пример демонстрирует выполнение телефонного звонка при помощи класса 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;
};


(no comments yet)