×
Namespaces

Variants
Actions

Определение FlightMode

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

Пример кода
Исходный файл: Media:Mobinfo-1.01-Signed.zip

Статья
Автор: truf (17 Oct 2007)
Последнее редактирование: hamishwillee (10 Nov 2011)

Режим Flight Mode во многом схож с режимом Offline Mode.


В Symbian до девятой версии для получения состояния этого режима необходимо установить File:Mobinfo-1.01-Signed.zip. После подключения заголовочного файла 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).
This page was last modified on 10 November 2011, at 06:10.
71 page views in the last 30 days.
×