SoundPool Android

SoundPool è utilizzato per riprodurre audio brevi, come effetti sonori e notifiche. Con il metodo setMaxStream si definisce il numero massimo di suoni che possono essere riprodotti simultaneamente. Quando invece il file audio è stato caricato in memoria è pronto per essere riprodotto con il metodo setOnLoadCompleteListener.
In questo esempio andiamo a utilizzare un Builder per configurare gli attributi audio:

res/raw
sound-1.wav

activity_main.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
    xmlns:app=”http://schemas.android.com/apk/res-auto&#8221;
    xmlns:tools=”http://schemas.android.com/tools&#8221;
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”
    tools:context=”.MainActivity”>

    <Button
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:id=”@+id/button_play”
android:text=”Play”
        app:layout_constraintBottom_toBottomOf=”parent”
        app:layout_constraintLeft_toLeftOf=”parent”
        app:layout_constraintRight_toRightOf=”parent”
        app:layout_constraintTop_toTopOf=”parent” />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java
package com.example.soundPool;

import android.media.AudioAttributes;
import android.media.SoundPool;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

SoundPool soundPool;
int soundID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

AudioAttributes audioAttributes=new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool=new SoundPool.Builder()
.setMaxStreams(5)
.setAudioAttributes(audioAttributes)
.build();

soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener(){
@Override
public void onLoadComplete(SoundPool soundPool,int sampleId,int status){
if (status==0){


}
}
});

soundID=soundPool.load(this,R.raw.sound-1,1);

Button button_play=findViewById(R.id.button_play);
button_play.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){

soundPool.play(soundID,1,1,0,0,1);
}

});
}
@Override
protected void onDestroy(){

super.onDestroy();

if(soundPool!= null){

soundPool.release();

soundPool=null;

}

}

}