Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

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;
    };

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

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX