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 17:19, 16 February 2008.

Получение параметров сети в Symbian 3-й редакции - синхронный метод

From Forum Nokia Wiki

Перевод с английского, оригинальная статья находится здесь.


Этот пример демонстрирует получение следующих параметров: идентификационные номера соты, сети сотовой связи и страны, название сети сотовой связи.

Contents

NetworkApp.h

#include <e32base.h>
#include <Etel3rdParty.h>
 
class CNetworkApp : public CActive
{
 
private:
        void ConstructL();
        CTelephony* iTelephony;
        CTelephony::TNetworkInfoV1 iNetworkInfoV1;
        CTelephony::TNetworkInfoV1Pckg iNetworkInfoV1Pckg;
 
public:
        CNetworkApp(
                TUint& CellId, TDes& NetworkId, TDes& CountryId, TDes& LongName);
        static void GetNetworkParameters(
                TUint& CellId, TDes& NetworkId, TDes& CountryId, TDes& LongName);
        ~CNetworkApp();
        TUint& iCellID;
        TDes&  iNetworkID;
        TDes&  iCountryCODE;
        TDes&  iLongNAME;
 
private:
        /*
        Далее следуют виртуальные методы класса CActive,
        которые ДОЛЖНЫ быть реализованы всеми активными объектами
        */
        void RunL();
        void DoCancel();
};

NetworkApp.cpp

#include "NetworkApp.h"
 
void CNetworkApp::GetNetworkParameters(
        TUint& aCellID, TDes& aNetworkID, TDes& aCountryCODE,
        TDes& aLongName)
{
        CNetworkApp* self=
                new(ELeave) CNetworkApp(
                        aCellID, aNetworkID, aCountryCODE, aLongName);
        CleanupStack::PushL(self);
        self->ConstructL();
        CleanupStack::PopAndDestroy(self);
}
 
void CNetworkApp::ConstructL()
{
        iTelephony = CTelephony::NewL();
        CActiveScheduler::Add(this);        
 
        iTelephony->GetCurrentNetworkInfo(iStatus, iNetworkInfoV1Pckg);
        SetActive();
        CActiveScheduler::Start();
 
}
 
CNetworkApp::CNetworkApp(
        TUint& aCellID,TDes& aNetworkID,TDes& aCountryCODE,TDes& aLongName):
                CActive(EPriorityStandard), iNetworkInfoV1Pckg(iNetworkInfoV1),
                iCellID(aCellID), iNetworkID(aNetworkID), iCountryCODE(aCountryCODE),
                iLongNAME(aLongName)
{
        //конструктор по-умолчанию
}
 
void CNetworkApp::RunL()
{
        if(iStatus==KErrNone)
        {
                iCellID = iNetworkInfoV1.iCellId;
                iNetworkID = iNetworkInfoV1.iNetworkId;
                iCountryCODE = iNetworkInfoV1.iCountryCode;
                iLongNAME= iNetworkInfoV1.iLongName;
                CActiveScheduler::Stop();
        }
}
 
void CNetworkApp::DoCancel()
{
        iTelephony->CancelAsync(CTelephony::EGetCurrentNetworkInfoCancel);
}
 
CNetworkApp::~CNetworkApp()
{
        if(iTelephony)
        {
                iTelephony->Cancel();
                delete iTelephony;
                iTelephony = NULL;
        }
}



Использование

Для использования этого кода, выполните следующие шаги:

  1. Создайте простое приложение "Hello World" с помощью шаблонов.
  2. Поместите файл NetworkApp.h в папку inc проекта.
  3. Поместите файл NetworkApp.cpp в папку src проекта.
  4. Откройте mmp файл проекта и добавьте строку SOURCE NetworkApp.cpp.
  5. Откройте mmp файл проекта и добавьте строку LIBRARY etel3rdparty.lib.
  6. Теперь добавьте следующий заголовочный файл в ваш класс (например, в файл: CYrAppUi.h): #include "NetworkApp.h".
  7. Откройте файл mmp и добавьте сроку CAPABILITY ReadDeviceData.

Теперь вы можете вызывать статическую функцию из обработчика комманд вашего приложения. Например:

case EReadNetworkCommand1:
{
        TUint CellId;
        TBuf<30> NetworkId;
        TBuf<30> CountryId;
        TBuf<30> OperatorLongName;        
        CNetworkApp::GetNetworkParameters(
                CellId, NetworkId, CountryId, OperatorLongName );
 
        TBuf<160> iDisplayString;
        iDisplayString.Format(
                _L( "CellId-%d\nNetworkID-%S\nCountryID-%S\nNETWORK-%S" ),
                 CellId, &NetworkId, &CountryId, &OperatorLongName );
 
        CAknInformationNote* informationNote = new ( ELeave )
                CAknInformationNote;
        informationNote->ExecuteLD(iDisplayString);
}

Для того, чтобы установить ваше приложение на телефон, вы должны подписать полученный .Sis файл с помощью сертификата разработчика.



Вы можете скачать демонстрационный проект, созданный в MS 2003 IDE с помощью Carbide.vs здесь
Здесь вы найдете библиотеку со схожей функциональностью для SDK Symbian S60 2-й редакции.

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

Ссылки

Related Discussions
Thread Thread Starter Forum Replies Last Post
hello world in symbian sebflash General Symbian C++ 1 2004-10-21 07:31
Problems with Programming in C++ soul87 Carbide.c++ and CodeWarrior Tools 12 2008-05-07 16:15
Software engineering apim General Symbian C++ 7 2007-11-25 17:54
Is there any ADT in Symbian? eqing2008 General Symbian C++ 7 2007-11-15 15:17
MMS on Symbian MMSbeginn General Messaging 1 2003-02-18 08:59
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX