IDIOMAS

Google-Translate-Chinese Google-Translate-Spanish to French Google-Translate-Spanish to German Google-Translate-Spanish to Japanese Google-Translate-Spanish to English Google-Translate-Spanish to Russian Google-Translate-Spanish to Portuguese Google-Translate-Spanish to Italian

martes, 23 de junio de 2015

Sonidos y audios en Android Studio: clase MEDIAPLAYER

Esta clase se utiliza para la reproducción de audio y vídeo en Java. Entre sus pros, destaca la posibilidad de reproducir archivos de gran tamaño y en numerosos formatos. En contra, que consume muchos recursos del dispositivo y es recomendable lanzarla desde un nuevo THEARD o un RUNNABLE dentro de su ACTIVITY. Más información en Android Devolupers.


Este es el código básico para activar la clase desde un botón con su evento OnClick llamado Play:


Mediaplayer mediaplayer;
...

//dentro de onCreate
//el evento Onclick se programa en el XML del botón
public void Play ( View view ) {

mediaplayer = Mediaplayer.create(this, R.raw."nombre_archivo_audio");
mediaplayer.star();

}

-Si lo queremos es paralo, este es el código para un botón de stop con su evento llamado Stop:

public void Stop ( View view ) {

mediaplayer.stop();
mediaplayer.release();

}


Salu2!!


5 comentarios:

  1. Lo probaré para ver si es lo que busco. Estoy haciendo un vocabulario en árabe y quiero añadir un botón que reproduzca como se dice. ¿Sabes si me servirá este código? Soy novato y aún me faltan muchas cosas por aprender.
    Un saludo.

    ResponderEliminar
    Respuestas
    1. Hola, he actualizado el código. Espero que sirva. Si tienes problema con él, dímelo. Saludos

      Eliminar
    2. J.Lopez disculpa yo tengo un problema al momento de reproducir un sonido. lo que pasa es que manejo mas de un boton con sonido y cuando esta reproduciendo uno y presiono otro se reproducen al mismo tiempo no se como hacer que al momento de que entre el otro sonido se detenga el anterior.

      el codigo que estoy usando esta asi:

      b2=(Button)findViewById(R.id.btn2);
      at = MediaPlayer.create(this, R.raw.atencion);
      b2.setOnClickListener(new View.OnClickListener(){


      @Override
      public void onClick (View v) {

      at.start();
      };

      });

      b3=(Button)findViewById(R.id.button3);
      al = MediaPlayer.create(this, alarma);

      b3.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick (View v) {

      al.start();
      };

      });



      espero puedas ayudarme

      Eliminar
    3. Puedes usar setEnable para inhabilitar botones, o usar togglebuttons con sus if\else, o if(al.isPlaying) at pare o el boton de at no funcione. Espero ayudar

      Eliminar
  2. hola, puedes ayudarme, quiero hacer un piano, pero cuando presiono el boton me suena toodo el sonido, solo quiero que suene hasta que e usuario levante el dedo, intente con soundpool pero no funciona..

    public class MainActivity extends AppCompatActivity {
    ImageButton imTecla29,imTecla30;

    private SoundPool soundPool;

    private int sonTecla29, sonTecla30;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //ORIENTACION

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    imTecla29=(ImageButton)findViewById(R.id.tecla1);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    soundPool =new SoundPool.Builder().setMaxStreams(5).build();
    }else {
    soundPool= new SoundPool(5, AudioManager.STREAM_MUSIC,0);

    }

    sonTecla29=soundPool.load(this, R.raw.acor29,1);

    imTecla29.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
    if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){
    soundPool.play(sonTecla29,1,1,0,0,0);

    }else if(motionEvent.getAction()== MotionEvent.ACTION_UP)
    soundPool.stop();
    return false;
    }
    });

    ResponderEliminar