Sonidos en Android

Sonidos con SoundPool y Mediaplayer en Android

SoundPool (OBSOLETO. Para API 21 o superiores es recomendable SoundPool.Builder)

SoundPool es una librería nativa de Android que permite reproducir audio desde un archivo. A continuación un ejemplo de reproducción de un sonido.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.constraint.ConstraintLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. xmlns:app="//schemas.android.com/apk/res-auto"
  4. xmlns:tools="//schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context="xip.midominio.com.sonidos.MainActivity">
  8. <TextView
  9. android:id="@+id/texto"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:text="Hello World!"
  13. app:layout_constraintBottom_toBottomOf="parent"
  14. app:layout_constraintLeft_toLeftOf="parent"
  15. app:layout_constraintRight_toRightOf="parent"
  16. app:layout_constraintTop_toTopOf="parent" />
  17. </android.support.constraint.ConstraintLayout>

MainActivity.java

  1. package xip.midominio.com.sonidos;
  2. import android.media.AudioManager;
  3. import android.media.SoundPool;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.MotionEvent;
  8. import android.view.View;
  9. import android.view.View.OnTouchListener;
  10. public class MainActivity extends AppCompatActivity implements OnTouchListener{
  11. private SoundPool soundPool;
  12. private int soundID;
  13. boolean loaded;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. View view = findViewById(R.id.texto);
  19. view.setOnTouchListener(this);
  20. this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
  21. soundPool = new SoundPool(10,AudioManager.STREAM_MUSIC,0);
  22. soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
  23. @Override
  24. public void onLoadComplete(SoundPool soundPool, int i, int i1) {
  25. loaded = true;
  26. }
  27. });
  28. soundID = soundPool.load(this,R.raw.sound37,1);
  29. }
  30. public boolean onTouch(View v, MotionEvent event){
  31. if(event.getAction() == MotionEvent.ACTION_DOWN){
  32. AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
  33. float volumenActual = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  34. float volumenMax = (float) audioManager.getStreamMaxVolume(audioManager.STREAM_MUSIC);
  35. float volumen = volumenActual / volumenMax;
  36. if(loaded){
  37. soundPool.play(soundID,volumen,volumen,1,0,1f);
  38. Log.e("test","reproduce sonido");
  39. }
  40. }
  41. return false;
  42. }
  43. }

MediaPlayer

Esta librería permite reproducir sonido y vídeo.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. >
  7. <TextView
  8. android:id="@+id/texto"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="Hello World!"
  12. />
  13. <Button
  14. android:id="@+id/boton"
  15. android:layout_width="match_parent"
  16. android:layout_height="wrap_content"
  17. android:text="Play"/>
  18. <Button
  19. android:id="@+id/boton2"
  20. android:layout_width="match_parent"
  21. android:layout_height="wrap_content"
  22. android:text="Stop"/>
  23. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.mediplayer;
  2. import android.media.MediaPlayer;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.TextView;
  8. import android.view.View.OnClickListener;
  9. public class MainActivity extends AppCompatActivity implements OnClickListener{
  10. Button boton,boton2;
  11. TextView texto;
  12. public MediaPlayer mp;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17. texto = (TextView) findViewById(R.id.texto);
  18. boton = (Button) findViewById(R.id.boton);
  19. boton2 = (Button) findViewById(R.id.boton2);
  20. boton.setOnClickListener(this);
  21. boton2.setOnClickListener(this);
  22. }
  23. public void onClick(View view){
  24. switch(view.getId()){
  25. case R.id.boton:
  26. play_mp();
  27. break;
  28. case R.id.boton2:
  29. stop_mp();
  30. break;
  31. default:
  32. break;
  33. }
  34. }
  35. public void play_mp(){
  36. mp = MediaPlayer.create(this,R.raw.sound37);
  37. mp.start();
  38. }
  39. public void stop_mp(){
  40. mp.stop();
  41. }
  42. }


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso