×
Namespaces

Variants
Actions

API Обработчика сервисов AIW

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Пример кода
Исходный файл: Media:AIWConsumer.zip

Статья
Перевод:
Оригинал: AIW Service Handler API
truf
Последнее редактирование: hamishwillee (16 Dec 2011)

Note.pngNote: :Это API не является частью SDK. Для его использования вы должны установить SDK API Plug-in.

API Обработчика Сервисов AIW (AIW Service Handler API) предоставляет базовую функциональность системы взаимодействий приложений (AIW) ее клиентам. Для этого используется Обработчик Сервисов (Service Handler), составляющий ядро системы AIW.

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

API Обработчика Сервисов AIW чаще всего используется в следующих целях:

  • Создание экземпляра Обработчика Сервисов
  • Подключение интересов:
  1. Базовых сервисов
  2. Сервисов меню
  • Инициализация панели меню
  • Выполнения сервисных комманд:
  1. Базовых команд сервисов
  2. Комманд меню сервисов
  • Удаление экземпляра Обработчика Сервисов

Примеры

Создание экземпляра Обработчика Сервисов

Для использования API Обработчика Сервисов AIW каждое приложение-клиент должно создать экземпляр Обработчика Сервисов.

// Создание экземпляра обработчика сервисов.
iServiceHandler = CAiwServiceHandler::NewL();


Подключение интересов

После создания экземпляра Обработчика Сервисов, вы должны подключить к нему интерес вашего приложения. Это нужно сделать до выполнения каких-либо сервисных комманд. Обычно, подключение выполняется один единственный раз в методе ConstructL() вашего приложения.

Базовые сервисы

Интересы базовых сервисов могут быть подключены с помощью CAiwServiceHandler::AttachL().

// Подключения интереса базовых сервисов. 
iServiceHandler->AttachL(R_AIWEXAMPLE_BASEINTEREST);

Интерес объявлен в файле ресурсов, см. API Критериев AIW.


Сервисы меню

Интересы сервисов меню могут быть подключены с помощью CAiwServiceHandler::AttachMenuL().

iServiceHandler->AttachMenuL(R_AIWEXAMPLE_MENU, R_AIWEXAMPLE_MENUINTEREST);

Панель меню и интерес, содержащий соответствующие критерии, должны быть объявлены в файле ресурсов. см. API Критериев AIW.


Инициализация панели меню

Панель меню, содержащая AIW меню, должна быть инициализирована. Это выполняется в методе DynInitMenuPaneL() приложения-клиента. Взгляните на следующий пример:

void CAIWExampleAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane *aMenuPane )
{
// Сначала, передадим панель меню системе AIW. В случае, если пользователь
// открывает AIW меню, оно бедет инициализировано AIW.
if ( iServiceHandler->HandleSubmenuL( *aMenuPane ) )
{
return;
}
 
// Здесь поместите ваш обычный (не связанный с AIW) код
// для инициализации простых элементов вашего меню...
 
// Позволим провайдеру AIW добавить собственные элементы в наше меню.
iServiceHandler->InitializeMenuPaneL(
*aMenuPane,
aResourceId,
EAIWExampleCmdLast,
iServiceHandler->InParamListL());
}

В этом примере предполагается, что меню содержит AIW подменю (т.е. подменю, содержащее только элементов меню AIW). Подменю инициализируется системой AIW. Поэтому, если CAiwServiceHandler::HandleSubmenuL() вернет ETrue - вы не должны инициализировать aMenuPane самостоятельно.

Инициализация меню происходит в CAiwServiceHandler::InitializeMenuPaneL(). Замечание: EAIWExampleCmdLast должно быть последним значением перечисления, т.к. Обработчика Сервисов использует его при генерации идентификаторов комманд меню.

Выполнение сервисных комманд

Сервисные команды AIW выполняются при помощи CAiwServiceHandler::ExecuteServiceCmdL() для базовых команд, и CAiwServiceHandler::ExecuteMenuCmdL() для команд меню. По умолчанию, эти методы выполняются синхронно, но существует и их асинхронный вариант (в этом случае, приложение-клиент реализует метод для обратного вызова). Больше информации об асинхронных версиях этих методов вы можете получить в разделе API Критериев AIW.

Базовые команды сервисов

Базовые команды сервисов выполняются при помощи CAiwServiceHandler::ExecuteServiceCmdL(). Пример приводится ниже (заполнение параметров рассматривается в AIW Generic Parameter API):

iServiceHandler->ExecuteServiceCmdL( 
KAiwCmdMnShowMap, // Сервисная комманда.
inParamList, // Список входящих параметров.
iServiceHandler->OutParamListL(), // Исходящие параметры не используются.
0, // Опции не используются.
NULL); // Нет функции обратного вызова
);

Команды меню сервисов

В "AppUI" классе приложения-клиента имеется реализация метода обратного вызова HandleCommandL(TInt aCommand). Когда вызывается этот метод, вы должны определить, является ли переданный в параметре идентификатор идентификатором команды из обычного меню. Если команда не распознана, вы должны передать ее системе AIW. Обычно это реализуется в разделе default выражения switch.

void CAIWExampleAppUi::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case ESomeNonAIWCommand:
{
// Выполнение команды.
// ...
break;
}
case EEikCmdExit:
{
Exit();
break;
}
default:
{
// Передача id команды в AIW,
// т.е. выполнение команды из AIW меню.
iServiceHandler->ExecuteMenuCmdL(
aCommand,
iServiceHandler->InParamListL() // Нет входящих параметров
iServiceHandler->OutParamListL(), // Нет исходящих параметров
0, // Не используются опции.
NULL); // Не нужен метод обратного вызова
break;
}
}
}

Удаление экземпляра Обработчика Сервисов

Экземпляр Обработчика Сервисов должен быть удален, если он больше не нужен. Обычно, это происходит в деструкторе приложения.

// Удаление экземпляра обработчика сервисов.
delete iServiceHandler;

Демонстрационный проект

File:AIWConsumer.zip

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

This page was last modified on 16 December 2011, at 03:55.
57 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.

×