×
Namespaces

Variants
Actions

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

From Nokia Developer 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 04:58.
85 page views in the last 30 days.
×