Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

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
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX