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.

Получение номера звонящего

From Wiki
Jump to: navigation, search
Article Metadata

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

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

Для телефонов на базе S60 1-й и 2-й редакций

#include <etelmm.h>
 
void GetRemotePartyPhoneNumberL(TDes& aPhoneNumber)
{
RTelServer etel;
 
// Подключение к серверу ETel
User::LeaveIfError(etel.Connect());
CleanupClosePushL(etel);
 
// Загрузка модуля телефона. Это делается из предосторожности
// т.к. он уже должен быть загружен
_LIT(KTsyName, "phonetsy.tsy");
User::LeaveIfError(etel.LoadPhoneModule(KTsyName));
 
RTelServer::TPhoneInfo phoneInfo;
 
// Получение информации о телефоне.
// Нам требуется название телефона для того, чтобы получить к нему доступ
const TInt KPhoneIndex = 0;
User::LeaveIfError(etel.GetPhoneInfo(KPhoneIndex, phoneInfo));
 
RPhone phone;
 
// Получение доступа к телефону
User::LeaveIfError(phone.Open(etel, phoneInfo.iName));
CleanupClosePushL(phone);
 
RPhone::TLineInfo lineInfo;
 
// Получение информации о линии связи.
// Нам требуется название линии, чтобы получить к ней доступ
const TInt KLineIndex = 0;
User::LeaveIfError(phone.GetLineInfo(KLineIndex, lineInfo));
 
RLine line;
 
// Получение доступа к линии связи
User::LeaveIfError(line.Open(phone, lineInfo.iName));
CleanupClosePushL(line);
 
RLine::TCallInfo callInfo;
 
// Получение информации о звонке.
// Нам требуется название звонка, чтобы получить к нему доступ.
const TInt KCallIndex = 0;
User::LeaveIfError(line.GetCallInfo(KCallIndex, callInfo));
 
RMobileCall call;
 
// Получение доступа к звонку
User::LeaveIfError(call.OpenExistingCall(line, callInfo.iCallName));
CleanupClosePushL(call);
 
RMobileCall::TMobileCallInfoV1 mobCallInfo;
RMobileCall::TMobileCallInfoV1Pckg mobCallInfoPckg(mobCallInfo);
 
// Получение информации о звонке
User::LeaveIfError(call.GetMobileCallInfo(mobCallInfoPckg));
 
// Мы успешно получили информацию о звонке.
// Теперь скопируем телефонной номер удаленной стороны в дескриптор
aPhoneNumber.Copy(mobCallInfoPckg().iRemoteParty.iRemoteNumber.iTelNumber);
 
// Закрываем все хэндлы
CleanupStack::PopAndDestroy(4); // call, line, phone, etel
}

Для телефонов на базе S60 3-й редакции

void GetRemotePartyPhoneNumberL(TDes& aPhoneNumber)
{
// Создаем экземпляр класса CTelephony
CTelephony* telephony = CTelephony::NewLC();
 
CTelephony::TCallInfoV1 callInfoV1;
CTelephony::TCallInfoV1Pckg callInfoV1Pckg(callInfoV1);
 
CTelephony::TCallSelectionV1 callSelectionV1;
CTelephony::TCallSelectionV1Pckg callSelectionV1Pckg(callSelectionV1);
 
CTelephony::TRemotePartyInfoV1 remotePartyInfoV1;
CTelephony::TRemotePartyInfoV1Pckg remotePartyInfoV1Pckg(remotePartyInfoV1);
 
callSelectionV1.iLine = CTelephony::EVoiceLine;
callSelectionV1.iSelect = CTelephony::EInProgressCall;
 
// Получаем информацию о звонке
User::LeaveIfError(telephony->GetCallInfo(callSelectionV1Pckg,
callInfoV1Pckg, remotePartyInfoV1Pckg));
// Копируем телефонной номер удаленной стороны в дескриптор
aPhoneNumber.Copy(remotePartyInfoV1Pckg().iRemoteNumber.iTelNumber);
 
CleanupStack::PopAndDestroy(); // telephony
}

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

This page was last modified on 9 December 2011, at 01:58.
151 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.

×