Buggy code:
public class Player { private static float MAX_JUMP_HEIGHT = Util . getPercentOfScreenHeight ( 15 ) ; private float lastPosY ; public static float width ; public static float height ; public float x ; public float y ; private boolean jumping = false ; private boolean jumpingsoundplayed = true ; private boolean onGround = false ; private boolean reachedPeak = false ; private boolean slowSoundplayed = false ; private float jumpStartY ; private float velocity = 0 ; private float velocityMax = 0 ; private float velocityDownfallSpeed = 0 ; private Rect playerRect ; private Rect ObstacleRect ; private float speedoffsetX = 0 ; private float speedoffsetXStart ; private float speedoffsetXMax ; private float speedoffsetXStep ; private Bitmap playerSpriteImg = null ; public Sprite playerSprite ; private boolean fingerOnScreen = false ; private float bonusVelocity = 0 ; private float bonusVelocityDownfallSpeed = 0 ; public int bonusItems = 0 ; private int bonusScorePerItem = 200 ; public Player ( Context context , OpenGLRenderer glrenderer , int ScreenHeight ) { } public void cleanup ( ) { } public void setJump ( boolean jump ) { } public boolean update ( ) { playerSprite . updatePosition ( x , y ) ; playerSprite . tryToSetNextFrame ( ) ; <START_BUG> if ( ( jumpingsoundplayed ) == false ) { <END_BUG> SoundManager . playSound ( 3 , 1 ) ; jumpingsoundplayed = true ; } if ( ( jumping ) && ( ! ( reachedPeak ) ) ) { velocity += ( 1.5F * ( ( Player . MAX_JUMP_HEIGHT ) - ( ( y ) - ( jumpStartY ) ) ) ) // 100.0F ; if ( Settings . RHDEBUG ) { Log . d ( "debug" , ( "y:<seq2seq4repair_space>" + ( y ) ) ) ; Log . d ( "debug" , ( "y<seq2seq4repair_space>+<seq2seq4repair_space>height:<seq2seq4repair_space>" + ( ( y ) + ( Player . height ) ) ) ) ; } if ( ( ( y ) - ( jumpStartY ) ) >= ( Player . MAX_JUMP_HEIGHT ) ) { reachedPeak = true ; } } else { velocity -= velocityDownfallSpeed ; } if ( ( velocity ) < ( - ( velocityMax ) ) ) velocity = - ( velocityMax ) ; else if ( ( velocity ) > ( velocityMax ) ) velocity = velocityMax ; y += ( velocity ) + ( bonusVelocity ) ; bonusVelocity -= bonusVelocityDownfallSpeed ; if ( ( bonusVelocity ) < 0 ) bonusVelocity = 0 ; playerRect . left = ( ( int ) ( x ) ) ; playerRect . top = ( ( int ) ( ( y ) + ( Player . height ) ) ) ; playerRect . right = ( ( int ) ( ( x ) + ( Player . width ) ) ) ; playerRect . bottom = ( ( int ) ( y ) ) ; onGround = false ; for ( int i = 0 ; i < ( Level . maxBlocks ) ; i ++ ) { if ( checkIntersect ( playerRect , Level . blockData [ i ] . BlockRect ) ) { if ( ( ( lastPosY ) >= ( Level . blockData [ i ] . mHeight ) ) && ( ( velocity ) <= 0 ) ) { y = Level . blockData [ i ] . mHeight ; velocity = 0 ; reachedPeak = false ; jumping = false ; onGround = true ; bonusVelocity = 0.0F ; } else { return false ; } } } lastPosY = y ; if ( ( speedoffsetX ) < ( speedoffsetXMax ) ) speedoffsetX += speedoffsetXStep ; x = ( speedoffsetXStart ) + ( speedoffsetX ) ; if ( ( ( y ) + ( Player . height ) ) < 0 ) { y = - ( Player . height ) ; return false ; } return true ; } public boolean collidedWithObstacle ( float levelPosition ) { } public boolean checkIntersect ( Rect playerRect , Rect blockRect ) { } public void reset ( ) { } public int getBonusScore ( ) { } }

Fix:
if ( ! ( jumpingsoundplayed ) ) {