This page was last modified 07:04, 18 October 2007.
Определение FlightMode
From Forum Nokia Wiki
Режим Flight Mode во многом схож с режимом Offline Mode.
В Symbian OS до девятой версии для получения состояния этого режима необходимо установить библиотеку Mobinfo. После подключения заголовочного файла mobileinfo.h FlightMode может быть определен с помощью функции:
CMobileNetworkInfo::GetNetworkAvailability(TMobileNetAvailability &aInfo, TRequestStatus &aReqStatus)
Значение первого аргумента проверяется на равенство CMobileNetworkInfo::EMobileFlightMode.
Асинхронное использование этой функции затруднений не вызывает. К сожалению, как следует из документации, функции Mobinfo API не могут быть использованы вместе с User::WaitForRequest(). Поэтому, для синхронного вызова вы можете использовать следующий класс:
Файл FlightMode.h
#ifndef FLIGHTMODE_H #define FLIGHTMODE_H #include <e32base.h> #include <mobileinfo.h> class CFlightMode : public CActive { public: static TBool IsInFlightModeL(); private: CFlightMode(); ~CFlightMode(); void ConstructL(); void Start(); private: void RunL(); void DoCancel(); private: CMobileNetworkInfo* iNetInfo; TMobileNetAvailability iNetAvailability; CActiveSchedulerWait* iWaitScheduler; }; #endif // FLIGHTMODE_H
Файл FlightMode.cpp
#include "FlightMode.h" TBool CFlightMode::IsInFlightModeL() { CFlightMode* self = new (ELeave) CFlightMode; CleanupStack::PushL(self); self->ConstructL(); TBool res = (self->iNetAvailability == EMobileFlightMode); CleanupStack::PopAndDestroy(self); return res; } CFlightMode::CFlightMode() : CActive( EPriorityStandard ) { CActiveScheduler::Add( this ); } void CFlightMode::ConstructL() { iWaitScheduler = new (ELeave) CActiveSchedulerWait; iNetInfo= CMobileNetworkInfo::NewL(); Start(); } CFlightMode::~CFlightMode() { Cancel(); delete iNetInfo; delete iWaitScheduler; } void CFlightMode::DoCancel() { iNetInfo->CancelGetNetworkAvailability(); if (iWaitScheduler->IsStarted()) { iWaitScheduler->AsyncStop(); } } void CFlightMode::Start( ) { iNetInfo->GetNetworkAvailability(iNetAvailability, iStatus); SetActive(); iWaitScheduler->Start(); } void CFlightMode::RunL() { iWaitScheduler->AsyncStop(); }
Использование:
if (CFlightMode::IsInFlightModeL()) { // ... }
В Symbian третьей редакции определение Flight Mode выполняется с помощью
CTelephony::GetFlightMode(TRequestStatus &aReqStatus, TDes8 &aMode).
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Getting FlightMode | truf | General Symbian C++ | 2 | 2007-10-13 11:02 |
| Restrict to ask APN at flightmode | pedda.patti@ps.net | Mobile Java Networking & Messaging & Security | 4 | 2006-11-09 01:26 |
