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:
- 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. - 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
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
>
- 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
;
}
}
}
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