Esta es probablemente una pregunta tonta, pero soy muy nuevo en la codificación, así que tengan paciencia conmigo.

Estoy tratando de reproducir archivos de audio cuando se presiona un botón y se selecciona una canción en la rueda giratoria. Pero el número no parece estar actualizando y solo escucho la misma canción.

 private void Onclick() {
    final int[] songlist ={
            R.raw.salsa,
            R.raw.fantasy,
    };

    mp = MediaPlayer.create(this, songlist[spinner.getSelectedItemPosition()]);
    mp.setLooping(true);

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

                    mp.start();}


            });}

¿Por qué no funciona esto?

EDITAR: método onCreate

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


    play_btn = (ImageButton) findViewById(R.id.play_btn);

    spinner = (Spinner) findViewById(R.id.song_spinner);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.songs_array, android.R.layout.simple_spinner_item);


    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);

    Onclick();



}
0
Gaius Julius Caesar 20 mar. 2017 a las 19:44

2 respuestas

La mejor respuesta

Usted puede ir con esto:

Agregar una propiedad de clase como:

final int[] songlist ={
        R.raw.salsa,
        R.raw.fantasy,
};

int selectedSong; //default to 0

Luego, en su clase, puede agregar un oyente en los eventos de cambio de valor de la ruleta con esto:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        selectedSong = position;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {}
});

Y ahora en el botón onClick, puedes ir con este código:

play_btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mp = MediaPlayer.create(MainActivity.this, songlist[selectedSong]);
        mp.setLooping(true);
        mp.start();
    }
});
0
MatPag 21 mar. 2017 a las 13:31

Para que esto funcione, todo lo que tiene que hacer es inicializar el objeto del reproductor de medios cada vez que hace clic en el botón presionado.

play_btn.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            // in your code it is initialised with the first selected object
                mp = MediaPlayer.create(this, songlist[spinner.getSelectedItemPosition()]);
                mp.setLooping(true);
                mp.start();}
        })};
0
Dr. aNdRO 3 abr. 2017 a las 13:13