/
arti4
/
IndividualProject
Обзор
Документация
Войти
/
arti4
/
IndividualProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MyGame/app/src/main/java/com/example/mygame/SoundManager.java
149 строк
5 KB
arti4
upload files
18 ноя 2025, 12:41
18 ноя 2025, 12:41
f3a2f8a
Код
Авторство
О чём код?
package com.example.mygame; import android.content.Context; import android.media.MediaPlayer; import android.util.Log; import java.util.HashMap; public class SoundManager { private static final String TAG = "SoundManager"; private Context context; private HashMap<String, MediaPlayer> sounds; private boolean soundsEnabled = true; public static final String SOUND_MAIN_MENU = "main_menu"; public static final String SOUND_GAME = "game"; public static final String SOUND_EXPLOSION = "explosion"; private float musicVolume = 0.5f; private float effectsVolume = 0.5f; public SoundManager(Context context) { this.context = context; this.sounds = new HashMap<>(); initializeSounds(); } public SoundManager(Context context, float musicVolume, float effectsVolume) { this.context = context; this.musicVolume = musicVolume; this.effectsVolume = effectsVolume; this.sounds = new HashMap<>(); initializeSounds(); } private void initializeSounds() { try { int mainMenuResId = context.getResources().getIdentifier("main_menu", "raw", context.getPackageName()); int gameResId = context.getResources().getIdentifier("game", "raw", context.getPackageName()); int explosionResId = context.getResources().getIdentifier("explosion", "raw", context.getPackageName()); if (mainMenuResId != 0) { MediaPlayer mainMenuPlayer = MediaPlayer.create(context, mainMenuResId); mainMenuPlayer.setLooping(true); mainMenuPlayer.setVolume(musicVolume, musicVolume); sounds.put(SOUND_MAIN_MENU, mainMenuPlayer); } if (gameResId != 0) { MediaPlayer gamePlayer = MediaPlayer.create(context, gameResId); gamePlayer.setLooping(true); gamePlayer.setVolume(musicVolume, musicVolume); sounds.put(SOUND_GAME, gamePlayer); } if (explosionResId != 0) { MediaPlayer explosionPlayer = MediaPlayer.create(context, explosionResId); explosionPlayer.setVolume(effectsVolume, effectsVolume); sounds.put(SOUND_EXPLOSION, explosionPlayer); } } catch (Exception e) { Log.e(TAG, e.getMessage()); } } public void playSound(String soundName) { if (!soundsEnabled) return; MediaPlayer player = sounds.get(soundName); if (player != null) { try { if (player.isPlaying()) { player.seekTo(0); } else { player.start(); } } catch (Exception e) { Log.e(TAG, e.getMessage()); } } } public void stopSound(String soundName) { MediaPlayer player = sounds.get(soundName); if (player != null && player.isPlaying()) { player.pause(); player.seekTo(0); } } public void stopAllSounds() { for (MediaPlayer player : sounds.values()) { if (player != null && player.isPlaying()) { player.pause(); player.seekTo(0); } } } public void setLooping(String soundName, boolean looping) { MediaPlayer player = sounds.get(soundName); if (player != null) { player.setLooping(looping); } } public void setVolume(String soundName, float volume) { MediaPlayer player = sounds.get(soundName); if (player != null) { player.setVolume(volume, volume); if (SOUND_MAIN_MENU.equals(soundName) || SOUND_GAME.equals(soundName)) { musicVolume = volume; } else if (SOUND_EXPLOSION.equals(soundName)) { effectsVolume = volume; } } } public void setMusicVolume(float volume) { this.musicVolume = volume; MediaPlayer mainMenuPlayer = sounds.get(SOUND_MAIN_MENU); MediaPlayer gamePlayer = sounds.get(SOUND_GAME); if (mainMenuPlayer != null) { mainMenuPlayer.setVolume(volume, volume); } if (gamePlayer != null) { gamePlayer.setVolume(volume, volume); } } public void setEffectsVolume(float volume) { this.effectsVolume = volume; MediaPlayer explosionPlayer = sounds.get(SOUND_EXPLOSION); if (explosionPlayer != null) { explosionPlayer.setVolume(volume, volume); } } public float getMusicVolume() { return musicVolume; } public float getEffectsVolume() { return effectsVolume; } public void setSoundsEnabled(boolean enabled) { this.soundsEnabled = enabled; if (!enabled) { stopAllSounds(); } } public void release() { for (MediaPlayer player : sounds.values()) { if (player != null) { if (player.isPlaying()) { player.stop(); } player.release(); } } sounds.clear(); } }