This page was last modified 19:18, 1 January 2008.
Отслеживание уровня сигнала с помощью CTelephony
From Forum Nokia Wiki
Перевод с английского, оригинальная статья находится здесь.
Этот пример демонстрирует возможность отслеживания текущего уровня сигнала сети с помощью 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; };
Внутренние ссылки
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| ็How to get the cause of disconnect when calling? | Phiphatc | General Symbian C++ | 7 | 2007-12-12 09:28 |
| Вывод текста под углом | midday | Russian Developer Forum - Форум Российских разработчиков | 38 | 2007-12-15 06:59 |
| Please, help! MCC on N70, 9300i | aaldru | General Symbian C++ | 3 | 2006-11-08 20:35 |
| Is it possible to write phone application in Symbian? | hojj@ | General Symbian C++ | 9 | 2008-05-06 14:45 |
| CTelephony Help | lalitjadiya | General Symbian C++ | 2 | 2008-06-18 10:03 |
