×
Namespaces

Variants
Actions

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

From Nokia Developer 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 05:06.
64 page views in the last 30 days.
×