По официальной версии Series 60 SDK не позволяет получить доступ к идентификатору текущей GSM соты. Однако при желании можно достать необходимые библиотеки (нужные .h файлы входят в состав более старой Communicator 9200 SDK). Для начала нужно скопировать файлыetel.h иetelbgsm.h из 9200 SDK в папку \Symbian\6.1\Series60\Epoc32\Include. Затем при линковке нужно подключить библиотекиgsmbas.lib иetel.lib.
Теперь Вы можете запустить следующий код. (Этот пример не работает на эмуляторе. Тестирование необходимо проводить на реальном устройстве)
RBasicGsmPhone phone; RTelServer server; User::LeaveIfError( server.Connect()); // загружаем профиль _LIT(KGsmModuleName,"phonetsy.tsy"); User::LeaveIfError( server.LoadPhoneModule( KGsmModuleName)); // инициализируем объект RTelServer::TPhoneInfo info; User::LeaveIfError( server.GetPhoneInfo(0, info)); User::LeaveIfError( phone.Open( server, info.iName)); MBasicGsmPhoneNetwork::TCurrentNetworkInfo ni; User::LeaveIfError( phone.GetCurrentNetworkInfo( ni));
Теперь поля .iCellId, .iLocationAreaCode и .iNetworkInfo.iShortName объекта MBasicGsmPhoneNetwork::TCurrentNetworkInfo должны содержать необходимую информацию. После их использования не забудьте освободить ресурсы:
phone.Close(); server.UnloadPhoneModule( KGsmModuleName); server.Close();
Все вышеописанное должно работать на 6600. Вы можете откомпилировать приложение с помощью 1.2 SDK или воспользоваться 2.0 SDK, предварительно скопировав необходимые файлы.
С помощью указанных объектов можно получить и другую полезную информацию. Например, на форуме Nokia утверждают, что с их помощью можно добраться до
Symbian Programming - "Getting the current Cell Id" byMika Raento.
Перевод:aRix