我有三个声音文件:sound1.ogg,sound2.ogg和sound3.ogg。每个都有几秒钟的长度,存储在我项目的/res/raw
文件夹中。
我希望他们在main_activity的ListView
中能够在用户触摸相应的剪辑名称时播放剪辑。
有人可以给我一个如何做到这一点的例子吗?到目前为止,我已经花了3天时间看着音池,我仍在摸不着头脑。
我对java不太好
答案 0 :(得分:0)
以下代码将根据所点击项目的位置播放声音。这里的主要xml文件中的所有内容都是带有ID listview1的ListView。 您应该能够更改r.raw引用和列表视图的ID,此代码将起作用。
有大量的教程,如果你自己尝试这样的事情而不是要求答案,你会学得更好。
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);
}
}
});
}
}