Звук работает на HTC Desire, но не на T-Mobile G1 - PullRequest
2 голосов
/ 13 июля 2010

Я определил следующий класс звука для воспроизведения звука в моей игре 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 может воспроизводиться только звук открытия.Другие звуковые файлы не воспроизводятся, но и здесь нет исключений.Оба устройства используют 2.1.

Любые подсказки?

1 Ответ

1 голос
/ 13 июля 2010

Просто используйте SoundPool для коротких звуков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...