我正在尝试创建代码,以根据在单独的android studio活动中创建的wav文件的数量动态地创建differnet媒体播放器按钮。
每个wav文件使用以下文件路径保存
/data/data/com.example.androidaudiorecorder/files/event1.wav
/data/data/com.example.androidaudiorecorder/files/event2.wav
/data/data/com.example.androidaudiorecorder/files/event3.wav
这是创建按钮并将它们放置在数组中的代码:
Button[] buttonsPlay = new Button[data];
for (int loop = 0; loop < data ; loop++) {
playID ++;
Button button = new Button(this);
button.setId(playID);
button.setText("Play event "+playID);
String buttonName = "PlayEvent" + playID;
button.setLayoutParams(new LinearLayout.LayoutParams(500, 50));
LinearLayout.LayoutParams ll = (LinearLayout.LayoutParams)button.getLayoutParams();
ll.gravity = Gravity.CENTER;
button.setLayoutParams(ll);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
button.setLayoutParams(params);
buttonsPlay[loop] = button;
}
创建每个按钮后,我要遍历数组中的所有按钮并播放相应的wav文件。
这是我到目前为止的尝试
playID = 0;
for (int loop = 0 ; loop < buttonsPlay.length ; loop ++){
playID++;
Toast.makeText( ctx, "play is " + playID , Toast.LENGTH_SHORT).show();
buttonsPlay[loop] = (Button) findViewById( buttonsPlay[loop].getId());
buttonsPlay[loop].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String dataSource = "/data/data/com.example.androidaudiorecorder/files/event"+ playID +".wav";
playEvent( dataSource);
}
});
不幸的是,每次我播放wav时,它只会播放最后一次创建的wav事件。
例如,如果有10个wav文件,则每个按下的按钮都会播放:
“ / data / data / com.example.androidaudiorecorder / files / event10.wav”
如果有人对如何纠正此问题有任何建议,我将不胜感激。