public void pause() {
        execute(() ->  {
            if (state == State.PLAYING) {
                if (player == null) {
                    setState(State.NO_SONG, false);
                } else if (!player.isPlaying()) {
                    setState(State.STOPPED, false);
                } else {
                    this.player.pause();
                    final long currentTime = System.currentTimeMillis();
                    this.timePassedBeforeLastStart += (int) (currentTime - timeLastStartTimestamp);
                    timeLastStartTimestamp = -1;
                    setState(State.STOPPED, false);
                }
            }
        });
    }
Represents and manages one audio file or tone
main/src/main/java/cgeo/geocaching/utils/AudioManager.java