×
Namespaces

Variants
Actions

Отслеживание уровня сигнала с помощью CTelephony

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

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

Этот пример демонстрирует возможность отслеживания текущего уровня сигнала сети с помощью CTelephony API в устройстве на базе Symbian 3-й редакции.

Пример очень простой, для его использования достаточно реализовать функцию обратного вызова и создать экземпляр класса CNwSignalCheck.

При создании экземпляра CNwSignalCheck, начальный уровень сигнала сети будет получен с помощью асинхронного запроса GetSignalStrength(). После его завершения и вызова RunL(), все изменения будут отслеживаться с помощью NotifyChange().

SignalStrenght.cpp

CNwSignalCheck::~CNwSignalCheck()
{
Cancel();
delete iTelephony;
}
 
void CNwSignalCheck::ConstructL(void)
{
iTelephony = CTelephony::NewL();
GetSignalInfo();
}
 
CNwSignalCheck::CNwSignalCheck(MNwSignalObserver& aObserver)
: CActive(EPriorityStandard),iObserver(aObserver),iSigStrengthV1Pckg(iSigStrengthV1)
{
CActiveScheduler::Add(this);
}
 
void CNwSignalCheck::GetSignalInfo()
{
if(iTelephony && !IsActive())
{
iGettingSignal = ETrue;
iTelephony->GetSignalStrength(iStatus, iSigStrengthV1Pckg);
SetActive();
}
}
 
void CNwSignalCheck::RunL()
{
iObserver.SignalStatus(iSigStrengthV1.iSignalStrength,iSigStrengthV1.iBar);
 
if(iStatus != KErrCancel)
{
iTelephony->NotifyChange(iStatus,CTelephony::ESignalStrengthChange,iSigStrengthV1Pckg);
SetActive();
}
 
iGettingSignal = EFalse;
}
 
void CNwSignalCheck::DoCancel()
{
if(iGettingSignal)
iTelephony->CancelAsync(CTelephony::EGetSignalStrengthCancel);
else
iTelephony->CancelAsync(CTelephony::ESignalStrengthChangeCancel);
}


SignalStrenght.h

#include <Etel3rdParty.h>
 
 
class MNwSignalObserver
{
public:
virtual void SignalStatus(TInt32 aStrength,TInt8 aBars) = 0;
};
 
 
 
class CNwSignalCheck : public CActive
{
public:
CNwSignalCheck(MNwSignalObserver& aObserver);
void ConstructL(void);
~CNwSignalCheck();
private:
void GetSignalInfo();
void RunL();
void DoCancel();
private:
MNwSignalObserver& iObserver;
CTelephony* iTelephony;
CTelephony::TSignalStrengthV1 iSigStrengthV1;
CTelephony::TSignalStrengthV1Pckg iSigStrengthV1Pckg;
TBool iGettingSignal;
};


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

This page was last modified on 9 December 2011, at 04:58.
67 page views in the last 30 days.
×