SoundPool en Android con ejemplos

En este artículo, aprenderemos cómo agregar la clase SoundPool en Android. Una colección de muestras de audio se puede cargar en la memoria desde un recurso y se puede utilizar. La clase SoundPool se usa para reproducir sonidos repetitivos cortos, mientras que la clase MediaPlayer se usa para reproducir clips más largos como música. Utiliza un servicio MediaPlayer para decodificar el audio. Forex: – Un juego consta de varios niveles de juego. Para cada nivel, hay un conjunto de sonidos exclusivos que solo utiliza ese nivel. Para eso, usamos la clase SoundPool para nuestro trabajo. Entonces, aprender la clase de SoundPool brinda una mejor comprensión para manejar los clips de audio cortos.

Acercarse:

  1. Cree un nuevo Directorio de recursos de Android y, para eso
    , haga clic con el botón derecho en la carpeta res -> Directorio de recursos de Android,
    asegúrese de seleccionar el tipo de recurso como sin formato. En esta carpeta sin procesar, pegue sus clips de audio.
  2. Agregue el siguiente código en el archivo activity_main.xml . Aquí se agregan tres botones. Si se hace clic en cada botón, se invocará el método playSound .

    actividad_principal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        tools:context=".MainActivity">
      
        <Button
            android:id="@+id/button_sound1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="playSound"
            android:text="Game Over"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
      
        <Button
            android:id="@+id/button_sound2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="playSound"
            android:text="Player Died"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.472" />
      
        <Button
            android:id="@+id/button_sound3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="playSound"
            android:text="Level Complete"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.472" />
      
      
    </androidx.constraintlayout.widget.ConstraintLayout>
  3. Agregue el siguiente código en el archivo MainActivity.java . Aquí, se crea un objeto de la clase SoundPool y se agregan tres clips de audio, game_over , level_complete y player_died usando el método de carga . También se agrega el método playSound que reproduce el clip de audio asociado con el botón respectivo.

    MainActivity.java

    package org.geeksforgeeks.gfgsoundpool;
      
    import androidx.appcompat.app.AppCompatActivity;
    import android.media.AudioAttributes;
    import android.media.AudioManager;
    import android.media.SoundPool;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.View;
      
    public class MainActivity
        extends AppCompatActivity {
        SoundPool soundPool;
        int game_over,
            level_complete,
            player_died;
      
        @Override
        protected void onCreate(
            Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            if (Build.VERSION.SDK_INT
                >= Build.VERSION_CODES.LOLLIPOP) {
                AudioAttributes
                    audioAttributes
                    = new AudioAttributes
                          .Builder()
                          .setUsage(
                              AudioAttributes
                                  .USAGE_ASSISTANCE_SONIFICATION)
                          .setContentType(
                              AudioAttributes
                                  .CONTENT_TYPE_SONIFICATION)
                          .build();
                soundPool
                    = new SoundPool
                          .Builder()
                          .setMaxStreams(3)
                          .setAudioAttributes(
                              audioAttributes)
                          .build();
            }
            else {
                soundPool
                    = new SoundPool(
                        3,
                        AudioManager.STREAM_MUSIC,
                        0);
            }
      
            // This load function takes
            // three parameter context,
            // file_name and priority.
            game_over
                = soundPool
                      .load(
                          this,
                          R.raw.game_over,
                          1);
            level_complete
                = soundPool.load(
                    this,
                    R.raw.level_complete,
                    1);
            player_died
                = soundPool.load(
                    this,
                    R.raw.player_died,
                    1);
        }
      
        public void playSound(View v)
        {
            switch (v.getId()) {
      
            case R.id.button_sound1:
      
                // This play function
                // takes five parameter
                // leftVolume, rightVolume,
                // priority, loop and rate.
                soundPool.play(
                    game_over, 1, 1, 0, 0, 1);
                soundPool.autoPause();
                break;
      
            case R.id.button_sound2:
                soundPool.play(
                    player_died, 1, 1, 0, 0, 1);
                break;
      
            case R.id.button_sound3:
                soundPool.play(
                    level_complete, 1, 1, 0, 0, 1);
                break;
            }
        }
    }
  4. Producción:

Publicación traducida automáticamente

Artículo escrito por madhavmaheshwarimm20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *