声音适用于HTC Desire但不适用于T-Mobile G1

时间:2010-07-13 10:04:09

标签: java android audio

我在Pacman游戏中定义了以下声音类来播放声音:

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;
    }

}

这对我的HTC Desire非常有效,但在我的T-Mobile G1上,只能播放OpeningSound。其他声音文件没有播放,但也没有例外。两种设备都使用2.1。

任何提示?

1 个答案:

答案 0 :(得分:1)

只需将SoundPool用于短音