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

domingo, 21 de junio de 2015

Como programar una SEEKBAR para controlar el volumen general desde nuetra aplicación Android en Android Studio.

Hola, hoy os mostraré cómo podemos controlar el flujo de STREAM de audio a través de una SEEKBAR sin utilizar los botones físicos del dispositivo.
Este ejemplo práctico estará compuesto por un archivo de audio de prueva, dos botones de PLAY y STOP y una SEEKBAR.
Para el XLM, os dejo el código más abajo. Si lo queréis hacer directamente vosotros :


- Crear la carpeta RAW ( http://trucosandroidstudio.blogspot.com.es/2015/03/como-crear-las-carpetas-raw-y-assets.html ), y arrastramos el audio de ejemplo:





- Creamos los botones PLAY y STOP, además de la SEEKBAR:



- XLM :


<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="PLAY"
        android:id="@+id/id_play"
        android:layout_above="@+id/id_volumen"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="42dp"
        android:onClick="Play" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="STOP"
        android:id="@+id/id_stop"
        android:layout_marginTop="38dp"
        android:layout_below="@+id/id_volumen"
        android:layout_alignLeft="@+id/id_play"
        android:layout_alignStart="@+id/id_play"
        android:onClick="Stop" />

    <SeekBar
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/id_volumen"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:indeterminate="false" />


- Ahora el código JAVA:


Button btn_play;
Button btn_stop;
SeekBar sk_volumen;
AudioManager audioManager;
MediaPlayer mediaPlayer;

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

    btn_play=(Button)findViewById(R.id.id_play);                 
    btn_play.setOnClickListener(new View.OnClickListener() {
        @Override        public void onClick(View v) {
            mediaPlayer=MediaPlayer.create(getApplication(),R.raw.audio_ejemplo);
            mediaPlayer.start();
            btn_play.setEnabled(false);
        }
    });

    btn_stop=(Button)findViewById(R.id.id_stop);
    btn_stop.setOnClickListener(new View.OnClickListener() {
        @Override        public void onClick(View v) {
            mediaPlayer.stop();
            mediaPlayer.release();
            btn_play.setEnabled(true);
        }
    });

    Volumen();
}

private void Volumen() {

    try {
        sk_volumen = (SeekBar)findViewById(R.id.id_volumen);
        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        sk_volumen.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
        sk_volumen.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));

        sk_volumen.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override            public void onStopTrackingTouch(SeekBar arg0) {
            }

            @Override            public void onStartTrackingTouch(SeekBar arg0) {
            }

            @Override            public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
            }
        });
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}



Compilar y probad :^]

Gracias, espero que sirva de ayuda, SALUDOS A TOD@S!

2 comentarios:

  1. Buenas Soy Principiante, Como Puedo introducir Es Codigo En El MainActivity.java?

    ResponderEliminar
    Respuestas
    1. (El nombre de tu clase ) extends ActionBar ( el que tengas tu ) {

      Button btn_play;
      Button btn_stop;
      SeekBar sk_volumen;
      AudioManager audioManager;
      MediaPlayer mediaPlayer;

      @Overrideprotected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main); // el nombre tu layout. Si no lo has cambiado, será este.

      btn_play=(Button)findViewById(R.id.id_play);
      btn_play.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
      mediaPlayer=MediaPlayer.create(getApplication(),R.raw.audio_ejemplo);
      mediaPlayer.start();
      btn_play.setEnabled(false);
      }
      });

      btn_stop=(Button)findViewById(R.id.id_stop);
      btn_stop.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
      mediaPlayer.stop();
      mediaPlayer.release();
      btn_play.setEnabled(true);
      }
      });

      Volumen();
      }

      private void Volumen() {

      try {
      sk_volumen = (SeekBar)findViewById(R.id.id_volumen);
      audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
      sk_volumen.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
      sk_volumen.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));

      sk_volumen.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      @Override public void onStopTrackingTouch(SeekBar arg0) {
      }

      @Override public void onStartTrackingTouch(SeekBar arg0) {
      }

      @Override public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
      }
      });
      }
      catch (Exception e)
      {
      e.printStackTrace();
      }

      Eliminar