From S60 3rd Edition FP 2 onwards, external volume buttons can be used to change the volume level of MMAPI players in mobile devices that have the volume buttons present.
The buttons work in this way when a MIDlet that uses MMAPI is on foreground.
They change the volume level for MMAPI Players globally, that is, the volume
level of every Player
in every MIDlet is altered.
S60 5th Edition:
A new Nokia proprietary event is added to notify the MIDlet when volume is
changed via External volume keys. The notification is made via PlayerListener.playerUpdate(Evendata)
callback with the event nokia.external.volume.Event
.
The event can be decoded to know the current global volume level as shown below:
// Effective volume considering both midlet volume and global volume int actualVolume = 0; int globalVolume = 0; public void playerUpdate(Player p, String event, Object eventData) { // get the current midlet volume level int midletVolume = vc.getLevel(); if(event.equals("nokia.external.volume.Event")) { // get the current global volume level globalVolume = Integer.parseInt(eventData.toString()); } // This event is generated when midlet volume level is changed if(event.equals("volumeChanged")) { midletVolume = vc.getLevel(); } actualVolume = (globalVolume/100) * midletVolume; }