Namespaces
Variants
Actions

Archived:Using customized key sounds with CAknKeySoundSystem

Jump to: navigation, search
Archived.png
Archived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.


Article Metadata

Tested with
Devices(s): Nokia N93

Compatibility
Platform(s): S60 3rd Edition, FP1

Article
Keywords: CAknKeySoundSystem, CAknAppUi, AVKON_SKEY_LIST, AVKON_SKEY_INFO, CAknAppUi::KeySounds(), CAknKeySoundSystem::AddAppSoundInfoListL(), CAknKeySoundSystem::PushContextL(), CAknKeySoundSystem::BringToForeground(), CAknKeySoundSystem::LockContext(), CAknKeySoundSystem::PopContext(), CAknKeySoundSystem::ReleaseContext()
Created: aknyman (09 May 2008)
Last edited: lpvalente (17 Sep 2012)

Contents

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 <eikon.rh>
#include <avkon.rsg>
#include <avkon.rh>
 
#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 <coecntrl.h>
 
class CAknKeySoundSystem;
 
class CTesterAppView : public CCoeControl
{
//...
private:
CAknKeySoundSystem* iSoundSystem;
TBool iCustomizedKeySounds;
};
 
#endif // __TESTERAPPVIEW_H__

Source file

#include <Tester_0xE0060BB5.RSG> //r_arrow_sound_list,r_arrow_skey_list
#include "Tester.hrh" //TArrowSoundId
#include <aknsoundsystem.h> // CAknKeySoundSystem
#include <aknappui.h>
 
void CTesterAppView::ConstructL(const TRect& aRect)
{
//...
iCustomizedKeySounds = EFalse;
iSoundSystem = static_cast<CAknAppUi*>(
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.

See also

Archived:Enabling and disabling defined key sound using CAknKeySoundSystem Enabling and disabling all key sounds using CAknKeySoundSystem

This page was last modified on 17 September 2012, at 14:14.
149 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved