This page was last modified 17:05, 16 February 2008.
Звонок при помощи CTelephony
From Forum Nokia Wiki
Перевод с английского, оригинальная статья находится здесь.
Этот пример демонстрирует выполнение телефонного звонка при помощи класса 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; };
Внутренние ссылки
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| SymbianSigned tests | dracula78 | Symbian Signing, Certification and Security | 7 | 2008-01-14 15:46 |
| CTelephony:AnsweringIncomingCall() problem | manchb | General Symbian C++ | 3 | 2007-05-10 15:45 |
| Cell Id again | jay_sholey | Symbian Networking & Messaging | 2 | 2006-07-28 13:54 |
| «Certified Signed» а нужно ли? | karatay | Russian Developer Forum - Форум Российских разработчиков | 11 | 2008-04-11 13:02 |
| Answering no working in 9.1 | vishalm | General Symbian C++ | 9 | 2006-11-23 10:58 |
