AudioManager.kt
android/Endless Runner/app/src/main/java/ca/medontime/endlessrunner/data/audio/AudioManager.kt
package ca.medontime.endlessrunner.data.audio
import android.content.Context
import android.media.MediaPlayer
import android.media.SoundPool
class AudioManager {
private var mediaPlayer: MediaPlayer? = null
private var soundPool: SoundPool? = null
private val soundMap = mutableMapOf<SoundType, Int>()
private var isMusicEnabled = true
private var isSoundEffectsEnabled = true
fun initialize(context: Context) {
// Initialize SoundPool for sound effects
soundPool = SoundPool.Builder()
.setMaxStreams(10)
.build()
// Load sound effects (placeholder IDs - would be actual sound files)
soundMap[SoundType.COIN_COLLECT] = 1
soundMap[SoundType.JUMP] = 2
soundMap[SoundType.SLIDE] = 3
soundMap[SoundType.COLLISION] = 4
soundMap[SoundType.POWERUP] = 5
}
fun startBackgroundMusic(context: Context) {
if (!isMusicEnabled) return
// TODO: Add actual background music file to res/raw/ folder
// For now, we'll skip background music until audio files are added
// This prevents compilation errors
}
fun stopBackgroundMusic() {
mediaPlayer?.stop()
mediaPlayer?.release()
mediaPlayer = null
}
fun pauseBackgroundMusic() {
mediaPlayer?.pause()
}
fun resumeBackgroundMusic() {
if (isMusicEnabled) {
mediaPlayer?.start()
}
}
fun playSoundEffect(soundType: SoundType) {
if (!isSoundEffectsEnabled) return
val soundId = soundMap[soundType] ?: return
soundPool?.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f)
}
fun setMusicEnabled(enabled: Boolean) {
isMusicEnabled = enabled
if (!enabled) {
pauseBackgroundMusic()
} else {
resumeBackgroundMusic()
}
}
fun setSoundEffectsEnabled(enabled: Boolean) {
isSoundEffectsEnabled = enabled
}
fun release() {
stopBackgroundMusic()
soundPool?.release()
soundPool = null
}
}
enum class SoundType {
COIN_COLLECT,
JUMP,
SLIDE,
COLLISION,
POWERUP
}
Articles liés
ExampleInstrumentedTest.kt
ExampleInstrumentedTest.kt — kotlin source code from the android learning materials (android/Endless Runner/app/src/androidTest/java/ca/medontime/endlessrunner/ExampleInstrumentedTest.kt).
Lire l'article →EndlessRunnerApplication.kt
EndlessRunnerApplication.kt — kotlin source code from the android learning materials (android/Endless Runner/app/src/main/java/ca/medontime/endlessrunner/EndlessRunnerApplication.kt).
Lire l'article →MainActivity.kt
MainActivity.kt — kotlin source code from the android learning materials (android/Endless Runner/app/src/main/java/ca/medontime/endlessrunner/MainActivity.kt).
Lire l'article →GameEngine.kt
GameEngine.kt — kotlin source code from the android learning materials (android/Endless Runner/app/src/main/java/ca/medontime/endlessrunner/data/game/GameEngine.kt).
Lire l'article →GameRepositoryImpl.kt
GameRepositoryImpl.kt — kotlin source code from the android learning materials (android/Endless Runner/app/src/main/java/ca/medontime/endlessrunner/data/repository/GameRepositoryImpl.kt).
Lire l'article →GameState.kt
GameState.kt — kotlin source code from the android learning materials (android/Endless Runner/app/src/main/java/ca/medontime/endlessrunner/domain/model/GameState.kt).
Lire l'article →