Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Доступные модули определения местоположения

From Wiki
Jump to: navigation, search
Article Metadata

Статья
Перевод:
Den123
Последнее редактирование: hamishwillee (09 Dec 2011)

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

Необходимые заголовочные файлы:

  • lbs.h

Библиотеки:

  • lbs.lib
  • bafl.lib - для работы с массивом CDesCArrayFlat
// сервер позиционирования
RPositionServer posServer;
User :: LeaveIfError( posServer.Connect() );
CleanupClosePushL( posServer );
 
// получение UID'а модуля позиционирования по умолчания
TPositionModuleId defModuleUid;
User :: LeaveIfError( posServer.GetDefaultModuleId( defModuleUid ) );
 
// получение количества доступных модулей позиционирования
TUint numOfModules = 0;
User :: LeaveIfError( posServer.GetNumModules( numOfModules ) );
if( numOfModules )
{
// массив для хранения списка
CDesCArrayFlat* itemArray = new ( ELeave ) CDesCArrayFlat( numOfModules );
CleanupStack :: PushL( itemArray );
 
// строки используются для формирования элементов списка
_LIT( KDefault, "* " ); // для модуля по умолчанию
_LIT( KGeneral, "- " );
 
const TInt KMaxModuleNameLen = 128;
for( TUint i = 0; i < numOfModules; i++ )
{
// чтение информации текущего модуля
TPositionModuleInfo moduleinfo;
posServer.GetModuleInfoByIndex ( i, moduleinfo );
 
// получение имени текущего модуля
TBuf< KMaxModuleNameLen > moduleName;
moduleinfo.GetModuleName( moduleName );
 
// перед именем модуля добавляется маркер "*" или "-"
moduleName.Insert( 0, moduleinfo.ModuleId() == defModuleUid ?
KDefault : KGeneral );
 
// добавление строки в массив
itemArray->AppendL( moduleName );
}
ShowListL( itemArray );
CleanupStack :: PopAndDestroy(); // itemArray
}
 
CleanupStack :: PopAndDestroy(); // posServer

Использование данного фрагмента на конечном устройстве требует Location Capability.

Для отображения списка можно использовать функцию ShowListL.

Заголовочные файлы:

  • aknlists.h

Библиотеки:

  • avkon.lib
  • eikcoctl.lib
  • eikctl.lib
void YourClass :: ShowListL( CDesCArray* anArray )
{
// создание инстанции класса CEikTextListBox для списка
CEikTextListBox* list = new( ELeave ) CAknSinglePopupMenuStyleListBox;
 
// сохраняем указатель в стеке очистки
CleanupStack::PushL( list );
 
// создание инстанции CAknPopupList для отображения списка
CAknPopupList* popupList = CAknPopupList::NewL( list,
R_AVKON_SOFTKEYS_OK_EMPTY,
AknPopupLayouts::EMenuWindow );
// сохраняем указатель в стеке очистки
CleanupStack::PushL( popupList );
 
// инициализация списка
list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
list->CreateScrollBarFrameL( ETrue );
list->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
CEikScrollBarFrame::EAuto );
 
// утсановка содержимого списка
CTextListBoxModel* model = list->Model();
model->SetItemTextArray( anArray );
model->SetOwnershipType( ELbmDoesNotOwnItemArray );
 
// отображение списка
popupList->ExecuteLD();
 
CleanupStack::Pop(); // popupList
CleanupStack::PopAndDestroy(); // list
}

Для Nokia N95 список может выглядеть следующим образом ( символом '*' обозначен текущий модуль по умолчанию ):

- Bluetooth GPS
* A-GPS
- Встроенный GPS
- На базе сети

This page was last modified on 9 December 2011, at 02:06.
177 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×