×
Namespaces

Variants
Actions

Создание Click Plug-in DLL

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

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

Статья
Автор: truf (15 Mar 2008)
Последнее редактирование: hamishwillee (10 Nov 2011)
ID   Creation date March 15, 2008
Platform S60 3rd Edition Tested on devices Nokia 3250
Category Symbian C++ Subcategory Base/System
Keywords: RSoundPlugIn, CClickMaker, KEYCLICKPLUGIN

Введение

Click Plug-in DLL - это системные библиотеки Symbian, позволяющие обрабатывать нажатия клавиш и стилуса. Основным назначением является воспроизведение короткого звукового сигнала, соответствующего нажатой клавише.

Click Plug-in DLL загружаются системным процессом EwSrv.exe, и поэтому должны иметь следующую модель возможностей: PowerMgmt, ProtServ, ReadDeviceData, WriteDeviceData. Click Plug-in DLL являются полиморфными библиотеками, содержащими класс, реализующий интерфейс CClickMaker, и должны находится в директории "\sys\bin\".

При включении устройства, Symbian загружает Click Plug-in DLL указанную после ключевого слова KEYCLICKPLUGIN в файле wsini.ini. В этом же файле использование Click Plug-in может быть запрещено ключевым словом KEYCLICKPLUGINFIXED, поэтому данный пример работает не на всех устройствах.

Для того, чтобы программно загрузить, изменить или выгрузить Click Plug-in DLL, приложение должно создать экземпляр клиента системного процесса RSoundPlugIn. Использование RSoundPlugIn::Load() и RSoundPlugIn::Unload() требует объявления WriteDeviceData в возможностях приложения-клиента.

RSoundPlugIn и CClickMaker объявлены в W32STD.H.

MMP файл Plug-in'а (часть)

TARGET		  MyClickerPlugin.dll
TARGETTYPE DLL
UID 0x10004F63 0xE057FBBA
 
LIBRARY euser.lib ws32.lib
 
CAPABILITY PowerMgmt ProtServ ReadDeviceData WriteDeviceData

Заголовочный файл Plug-in'а

#include <e32base.h>     // CBase
#include <e32std.h> // TBuf
#include <W32CLICK.H> // CClickMaker
 
class CMyClickerPlugin : public CClickMaker
{
public:
CMyClickerPlugin();
IMPORT_C void KeyEvent(TEventCode aType, const TKeyEvent &aEvent);
IMPORT_C void PointerEvent(const TPointerEvent &aEvent);
IMPORT_C void OtherEvent(TInt aType, TAny *aParam=NULL);
IMPORT_C TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
};

Первая функция полиморфной dll Plug-in'а

EXPORT_C CClickMaker* CreateClickMakerL()
{
return new (ELeave) CMyClickerPlugin;
}

MMP файл клиента (часть)

LIBRARY		 ws32.lib 
 
CAPABILITY WriteDeviceData

Получение информации о поддержке Click Sound Plug-in

RWsSession session;
User::LeaveIfError(session.Connect());
SoundPlugIn = new RSoundPlugIn(session);
TBool Is_Changeble;
TBool Is_Loaded = SoundPlugIn->IsLoaded(Is_Changeble);
if (Is_Loaded) { .. } else { .. }
if (Is_Changeble) { .. } else { .. }
SoundPlugIn.Close();
session.Close();

Загрузка Click Sound Plug-in

_LIT(KPluginDll,"MyClickerPlugin.dll");
SoundPlugIn->Load(KPluginDll());

Выгрузка Click Sound Plug-in

TInt err = SoundPlugIn->Unload();

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

Здесь вы можете скачать демонстрационный проект, создающий Click Sound Plug-in для воспроизведения сигнала частотой 1000 Герц и длительностью 0,25 секунды с помощью CMdaAudioToneUtility при нажатии любой клавиши. Для загрузки и выгрузки библиотеки, в проекте содержится GUI приложение-клиент. File:ClickerSoundPlugIn3rd.zip

This page was last modified on 10 November 2011, at 06:15.
34 page views in the last 30 days.