简体   繁体   中英

Sound works on HTC Desire but not on T-Mobile G1

I defined the following Sound Class to play Sound in my Pacman Game:

public class Sound {

    private static boolean sound = true;

    private static MediaPlayer eatSound;
    private static MediaPlayer shortEatSound;
    private static MediaPlayer eatCherry;
    private static MediaPlayer eatGhost;
    private static MediaPlayer extraLive;
    private static MediaPlayer intermission;
    private static MediaPlayer openingSound;
    private static MediaPlayer pacmanDiesSound;
    private static MediaPlayer sirenSound;

    public static void initializeOpenSound(Context context) {
        openingSound = MediaPlayer.create(context, R.raw.opening_song);
    }

    public static void initializeSounds(Context context) {
        eatSound = MediaPlayer.create(context, R.raw.eating);
        shortEatSound = MediaPlayer.create(context, R.raw.eating_short);
        eatCherry = MediaPlayer.create(context, R.raw.eating_cherry);
        eatGhost = MediaPlayer.create(context, R.raw.eating_ghoasts);
        extraLive = MediaPlayer.create(context, R.raw.extra_lives);
        intermission = MediaPlayer.create(context, R.raw.intermission);
        pacmanDiesSound = MediaPlayer.create(context, R.raw.pac_man_dies);
        sirenSound = MediaPlayer.create(context, R.raw.siren);
    }

    public static int getOpeningSoundDuration() throws SoundInitializationError {
        if (openingSound != null) {
            return openingSound.getDuration();
        } else {
            throw new SoundInitializationError("Opening Sound not initialized!");
        }
    }

    public static void playSirenSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (sirenSound != null) {
                sirenSound.start();
            } else {
                throw new SoundInitializationError("Siren Sound not initialized!");
            }
        }
    }

    public static void playPacmanDiesSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (pacmanDiesSound != null) {
                pacmanDiesSound.start();
            } else {
                throw new SoundInitializationError("Pacman Dies Sound not initialized!");
            }
        }
    }

    public static void playOpeningSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (openingSound != null) {
                openingSound.setLooping(true);
                openingSound.start();
            } else {
                throw new SoundInitializationError("Opening Sound not initialized!");
            }
        }
    }

    public static void playIntermissionSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (intermission != null) {
                intermission.start();
            } else {
                throw new SoundInitializationError("Intermission Sound not initialized!");
            }
        }
    }

    public static void playExtraLiveSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (extraLive != null) {
                extraLive.start();
            } else {
                throw new SoundInitializationError("Extra Live Sound not initialized!");
            }
        }
    }

    public static void playEatSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (eatSound != null) {
                eatSound.start();
            } else {
                throw new SoundInitializationError("Eat Sound not initialized!");
            }
        }
    }

    public static void playShortEatSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (shortEatSound != null) {
                shortEatSound.start();
            } else {
                throw new SoundInitializationError("Short Eat Sound not initialized!");
            }
        }
    }

    public static void playEatCherrySound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (eatCherry != null) {
                eatCherry.start();
            } else {
                throw new SoundInitializationError("Eat Cherry Sound not initialized!");
            }
        }
    }

    public static void playEatGhostSound() throws SoundInitializationError {
        if (isSoundOn()) {
            if (eatGhost != null) {
                eatGhost.start();
            } else {
                throw new SoundInitializationError("Eat Ghost Sound not initialized!");
            }
        }
    }

    public static void stopOpeningSound() throws SoundInitializationError {
        if (openingSound != null) {
            openingSound.stop();
        } else {
            throw new SoundInitializationError("Opening Sound not initialized!");
        }
    }

    public static boolean isSoundOn() {
        return sound;
    }

    public static void setSoundOn(boolean b) {
        sound = b;
    }

}

This works perfectly well on my HTC Desire, but on my T-Mobile G1, only the OpeningSound can be played. The other sound files aren't played, but there is also no exception. Both devices use 2.1.

Any hints?

只需使用SoundPool即可听到简短的声音

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM