Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2093331
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类:

2008-06-12 09:33:23

Overview

This code snippet shows how CAknKeySoundSystem is used to customize the key sounds of an application. The example code customizes arrow key sounds by defining its own AVKON_SKEY_LIST and AVKON_SKEY_INFO structures and uses these when array keys are pressed.

This snippet can be self-signed.

MMP file

The following libraries are required:

LIBRARY  avkon.lib
LIBRARY eikcore.lib
LIBRARY eiksrv.lib

Resource files

  • .hrh file
#ifndef __TESTER_HRH__
#define __TESTER_HRH__
 
//...
 
//arrow sound ids
enum TArrowSoundId
{
EUpSoundId = 1,
EDownSoundId,
ELeftSoundId,
ERightSoundId
};
 
 
#endif // __TESTER_HRH__
  • .rss file
#include 
#include
#include
 
#define KUpArrowSoundFile "c:\\data\\up.wav"
#define KDownArrowSoundFile "c:\\data\\down.wav"
#define KLeftArrowSoundFile "c:\\data\\left.wav"
#define KRightArrowSoundFile "c:\\data\\right.wav"
 
RESOURCE AVKON_SOUND_INFO_LIST r_arrow_sound_list
{
list =
{
// up arrow
AVKON_SOUND_INFO
{
sid = EUpSoundId;
priority = EAvkonKeyClickPriority;
preference = EAknAudioPrefDefaultTone;
file = KUpArrowSoundFile;
volume = 5;
},
// down arrow
AVKON_SOUND_INFO
{
sid = EDownSoundId;
priority = EAvkonKeyClickPriority;
preference = EAknAudioPrefDefaultTone;
file = KDownArrowSoundFile;
volume = 5;
},
// left arrow
AVKON_SOUND_INFO
{
sid = ELeftSoundId;
priority = EAvkonKeyClickPriority;
preference = EAknAudioPrefDefaultTone;
file = KLeftArrowSoundFile;
volume = 5;
},
// right arrow
AVKON_SOUND_INFO
{
sid = ERightSoundId;
priority = EAvkonKeyClickPriority;
preference = EAknAudioPrefDefaultTone;
file = KRightArrowSoundFile;
volume = 5;
}
};
}
 
RESOURCE AVKON_SKEY_LIST r_arrow_skey_list
{
list=
{
AVKON_SKEY_INFO
{
key = EStdKeyUpArrow;
sid = EUpSoundId;
},
AVKON_SKEY_INFO
{
key = EStdKeyDownArrow;
sid = EDownSoundId;
},
AVKON_SKEY_INFO
{
key = EStdKeyLeftArrow;
sid = ELeftSoundId;
},
AVKON_SKEY_INFO
{
key = EStdKeyRightArrow;
sid = ERightSoundId;
}
};
}


Header file

#ifndef __TESTERAPPVIEW_H__
#define __TESTERAPPVIEW_H__
 
// INCLUDES
#include
 
class CAknKeySoundSystem;
 
class CTesterAppView : public CCoeControl
{
//...
private:
CAknKeySoundSystem* iSoundSystem;
TBool iCustomizedKeySounds;
};
 
#endif // __TESTERAPPVIEW_H__

Source file

#include  //r_arrow_sound_list,r_arrow_skey_list
#include "Tester.hrh" //TArrowSoundId
#include // CAknKeySoundSystem
#include
 
void CTesterAppView::ConstructL(const TRect& aRect)
{
//...
iCustomizedKeySounds = EFalse;
iSoundSystem = static_cast(
CEikonEnv::Static()->AppUi() )->KeySounds();
 
if (!iSoundSystem)
{
//pointer to KeySound API object is null
User::Leave(KErrGeneral);
}

//install the application-specific set of sound ids
TRAPD( error, iSoundSystem->AddAppSoundInfoListL(
R_ARROW_SOUND_LIST ) );
 

if ((error != KErrNone) && (error != KErrAlreadyExists))
{
//install sound ids failed
User::Leave( error );
}


//NOTE: it is now also possible to play an installed sound
//just by calling the PlaySound() method e.g.
//iSoundSystem->PlaySound( EUpSoundId );
//...and stop playing it by calling
//iSoundSystem->StopSound( EUpSoundId );

}

CTesterAppView::~CTesterAppView()
{
iSoundSystem = NULL;
}

// ---------------------------------------------------------------------------
// Disable customized key sounds
// ---------------------------------------------------------------------------
//
void CTesterAppView::DisableCustomizedKeySounds()
{
if ( iSoundSystem && iCustomizedKeySounds )
{
//release the locked context
iSoundSystem->ReleaseContext();

//pop the pushed context from the context stack
iSoundSystem->PopContext();

iCustomizedKeySounds = EFalse;
}
}
 
 
// ---------------------------------------------------------------------------
// Enable customized key sounds
// ---------------------------------------------------------------------------
//
void CTesterAppView::EnableCustomizedKeySounds()
{
if ( iSoundSystem && !iCustomizedKeySounds )
{
//load key sound map from resources and push it to the context stack
iSoundSystem->PushContextL( R_ARROW_SKEY_LIST );

//tell server to use this context stack for processing sounds
iSoundSystem->BringToForeground();

//lock this context to the foreground, other BringToForeground() calls
//will be ignored until ReleaseContext() is called
iSoundSystem->LockContext();

iCustomizedKeySounds = ETrue;
}
}


Postconditions

If the EnableCustomizedKeySounds() method is called, the customized key sounds are played when the user presses the arrow keys. The default key sounds are played again after the DisableCustomizedKeySounds() method call.


from: http://wiki.forum.nokia.com/index.php/CS000953_-_Using_customized_key_sounds_with_CAknKeySoundSystem
阅读(1282) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~