Efectos de sonido del juego en Android

Estoy desarrollando un juego sencillo en Android. Quiero agregar efectos de sonido para cada uno de los eventos táctiles. Sin embargo, tengo agregar efectos de sonido de fondo que se ejecuta a lo largo del juego. Pero cómo puede añadir efecto de sonido diminuto para tocar cualquier personaje del juego. Para una mejor comprensión siguiente es mi diseño de clase: Tengo una actividad principal desde donde como vista llamo a mi clase GameView que extiende surfaceView. Para el sonido bacground Acabo de crear el sonido en mainActivity y luego llamó a que GameView clase como bellow:

public class MainActivity extends Activity { MediaPlayer backgroundMusic; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); backgroundMusic = MediaPlayer.create(MainActivity.this, R.raw.bg); backgroundMusic.setLooping(true); backgroundMusic.setVolume(10.0f, 3.0f); backgroundMusic.start(); setContentView(new GameView(this)); } } 

Y el siguiente es mi clase GameView. Quiero añadir efecto de sonido aquí en esta clase onTouchEvent como bellow:

 public class GameView extends SurfaceView { @Override public boolean onTouchEvent(MotionEvent event) { //checking condition I want to give different sound here. } } 

Intenté hacerlo como mainActivity (que está usando MediaPlayer.creat ()), pero muestra error. ¿Alguien sabe cómo añadir ese efecto de sonido sobre la base de mi diseño de clase?

Para efectos de sonido cortos como explosiones, colecciones de monedas, etc, es mejor usar SoundPool .

Sólo tienes que crear una agrupación de sonidos:

 SoundPool sp = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 

En Lollipop y más tarde:

 AudioAttributes attrs = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); SoundPool sp = new SoundPool.Builder() .setMaxStreams(10) .setAudioAttributes(attrs) .build(); 

Esto crea una piscina de sonido para max. De 10 secuencias de sonido (es decir, cuántos efectos de sonido simultáneos se pueden reproducir en cualquier momento) y utiliza AudioManager.STREAM_MUSIC como secuencia de sonidos.

Asegúrese de establecer también el control de volumen en su Activity , de modo que el usuario pueda cambiar el volumen de la secuencia adecuada:

 setVolumeControlStream(AudioManager.STREAM_MUSIC); 

Que, usted necesita para cargar los efectos de sonido en la piscina y darles sus identificadores:

 int soundIds[] = new int[10]; soundIds[0] = sp.load(context, R.raw.your_sound, 1); //rest of sounds goes here 

Tienes que pasar un contexto para cargar el método, por lo que o lo hace dentro de su actividad, o obtener es de algún otro lugar.

Y el paso final para jugar el sonido es llamar al método de play :

 sp.play(soundIds[0], 1, 1, 1, 0, 1.0); 

Los parámetros son:

  • SoundID un id de sonido devuelto por la función load ()

  • LeftVolumen valor de volumen izquierdo (rango = 0.0 a 1.0)

  • RightVolume volumen de volumen derecho (rango = 0.0 a 1.0)

  • Prioridad de prioridad (0 = prioridad más baja)

  • Modo bucle de bucle (0 = no hay bucle, -1 = bucle para siempre)

  • Tasa de reproducción (1,0 = reproducción normal, rango de 0,5 a 2,0)

Es necesario recordar que SoundPool no debe utilizar archivos de medios de más de 1 MB, SoundPool más pequeños sean los archivos, mejor efecto y rendimiento tendrá.

Asegúrese de liberar SoundPool cuando haya terminado o en Activity.onDestroy .

 sp.release(); 

Espero que esto ayude

GameView no es una subclase de Contexto. Pase la actividad o el ApplicationContext a Mediaplayer

Sólo haz lo siguiente …

 MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.combo); mp.start(); 

Lo encontré en Cómo jugar un efecto de sonido en Android

  • Octetos PCM de Android
  • El vídeo / audio de Cordova no se reproducirá desde cdvfile: // urls después de la actualización a 3.3.0
  • android.media paquete falta pocas clases en sdk-plataformas
  • Android: Cómo detener el servicio de música de mi aplicación, si otra aplicación reproduce música.
  • Android conjunto de altavoz en forma programática
  • Cómo reproducir el archivo de audio Mp3 desde el servidor
  • Cómo fusionar archivos de audio y video en android
  • Cómo utilizar el filtro Band Pass (18Khz a 22Khz) en Android
  • ¿Es necesario que el búfer AudioTrack esté lleno siempre en modo de transmisión?
  • Reproducir audio entre los puntos A y B
  • Volumen de audio de Android webRTC
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.