playListManager.getTrackDatabase().incNoOfPlays();
  private void playTrack() {    try {      synchronized (this) {        speaking = playListManager.getTrackDatabase().isRoboJockEnabled();        // If a next track has been chosen by the user, use that, otherwise        // pick one intelligently.        currentTrack =          nextTrack != null ? nextTrack : playListManager.chooseTrack();        toKeepPlaying = true;        nextTrack = null;      }      if (currentTrack != null) {        currentTrack.updateTimeStamp();        notifyUpdateListeners();        notifyNewTrackStarted(currentTrack);        File file = currentTrack.getFile();        if (file != null && file.exists()) {          if (speaking) {            try {              speech.say(                (currentTrack.isRated() ? "" : "Unrated. ")                  + currentTrack.getTitle()                  + " by "                  + currentTrack.getArtist());            }            catch (Exception e) {              e.printStackTrace();            }            finally {              speaking = false;            }          }          if (toKeepPlaying) {            playFile(file, volumeMeister.determineVolume(currentTrack));            if(!reverse){              history.add(currentTrack);              //System.out.println("Added to history:"+currentTrack+" reverse="+reverse);            }else              this.reverse = false;                        if (toKeepPlaying) {              playListManager.getTrackDatabase().incNoOfPlays();              currentTrack.incNoOfTimesPlayed();            }          }        }        else          speaking = false;      }    }    catch (Exception e) {      e.printStackTrace();    }    finally {      try {        sleep(500);      }      catch (InterruptedException e) {      }    }  }