Перечислите три разных звуковых файла (ogg) с возможностью воспроизведения по клику?

У меня есть три звуковых файла: sound1.ogg, sound2.ogg и sound3.ogg. Каждый из них длится пару секунд и хранится в папке /res/raw в моем проекте.

Я хотел бы, чтобы они были в ListView на моем main_activity с возможностью воспроизведения клипа, когда пользователь касается соответствующего имени клипа.

Может ли кто-нибудь написать мне пример того, как это будет сделано? Я провел 3 дня, глядя на звуковой пул, и я все еще чешу голову.

я не очень хорошо разбираюсь в java


person Jason Mills    schedule 05.08.2013    source источник
comment
Вы смотрели руководство и пытались следовать ему?   -  person mthmulders    schedule 05.08.2013


Ответы (1)


Приведенный ниже код будет воспроизводить звук в зависимости от положения выбранного элемента. Все, что здесь находится в основном xml-файле, — это ListView с идентификатором listview1. Вы должны иметь возможность изменить ссылки r.raw и идентификатор вашего представления списка, и этот код будет работать.

Существует множество руководств, и вы научитесь намного лучше, если будете пытаться делать такие вещи самостоятельно, а не спрашивать ответы.

 public class MainActivity extends Activity {

SoundPool sp;
String sounds[] = {"sound1","sound2","sound3"};
private ListView lv;


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

    sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
    sound1 = sp.load(this, R.raw.sound1, 1);
    sound2 = sp.load(this, R.raw.sound2,1);
    sound3 = sp.load(this, R.raw.sound3,1);


    lv =(ListView) findViewById(R.id.listview1);
    lv.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, sounds));
    lv.setTextFilterEnabled(true);
    lv.setOnItemClickListener(new OnItemClickListener()
    {

    @Override
        public void onItemClick(AdapterView<?> list, View view, int position,
                long id) {
            // TODO Auto-generated method stub
            if(position == 0){
                sp.play(sound1, 1, 1, 0, 0, 1);

            }else if (position == 1){
                    sp.play(sound2,1,1,0,0,1);

                }else if (position == 2){
                    sp.play(sound3, 1, 1, 0, 0, 1);
                }


    }
    });



}      
}
person D.Bish    schedule 05.08.2013