Java 一个接一个播放音频文件?
我是java的新手。因此,程序应该接收用户输入的文本,如果有“a”,它将播放a音,如果有“b”,它将播放b音。即使有多个“a”或“b”,它也必须逐个播放这些声音。这是我的密码:Java 一个接一个播放音频文件?,java,android,Java,Android,我是java的新手。因此,程序应该接收用户输入的文本,如果有“a”,它将播放a音,如果有“b”,它将播放b音。即使有多个“a”或“b”,它也必须逐个播放这些声音。这是我的密码: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bStart = (Button) fin
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bStart = (Button) findViewById(R.id.bStart);
final EditText etStart = (EditText) findViewById(R.id.etStart);
final EditText etFinish = (EditText) findViewById(R.id.etFinish);
final char[] arr = etStart.getText().toString().toCharArray();
final MediaPlayer as = MediaPlayer.create(R2d2Activity.this, R.raw.as);
final MediaPlayer bs = MediaPlayer.create(R2d2Activity.this, R.raw.bs);
final SoundPool sp;
final int a;
final int b;
final int t;
sp = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
a = sp.load(this, R.raw.as, 1);
b = sp.load(this, R.raw.bs, 1);
final String value = etStart.getText().toString();
final Thread timer = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1300);
// Do some stuff
} catch (Exception e) {
e.getLocalizedMessage();
}
}
});
bStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int n = 0;
String value;
String first;
value = etStart.getText().toString();
// TODO Auto-generated method stub
//actual code
for (int i=0; i<value.length(); i++){
first = etStart.getText().toString().substring(i, i+1);
if(first.contentEquals("a")){
as.start();
as.setOnCompletionListener(new OnCompletionListener(){
public void onCompletion(MediaPlayer arg0) {
//when finished
}
});
}else{
}
if(first.contentEquals("b")){
bs.start();
}else{
}
}
}
});
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮bStart=(按钮)findViewById(R.id.bStart);
最终EditText etStart=(EditText)findViewById(R.id.etStart);
最终EditText etFinish=(EditText)findViewById(R.id.etFinish);
final char[]arr=etStart.getText().toString().toCharray();
final MediaPlayer as=MediaPlayer.create(R2d2Activity.this,R.raw.as);
final MediaPlayer bs=MediaPlayer.create(R2d2Activity.this,R.raw.bs);
最终声池sp;
最终INTA;
最终int b;
最终int t;
sp=新的声音池(2,AudioManager.STREAM_MUSIC,0);
a=sp.荷载(本,R.raw.as,1);
b=sp.荷载(本,R.raw.bs,1);
最终字符串值=etStart.getText().toString();
最终线程计时器=新线程(新可运行(){
@凌驾
公开募捐{
试一试{
睡眠(1300);
//做点什么
}捕获(例外e){
e、 getLocalizedMessage();
}
}
});
bStart.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int n=0;
字符串值;
先串;
value=etStart.getText().toString();
//TODO自动生成的方法存根
//实际代码
对于(inti=0;i你能做的是
//define a variable to be used as index.
int audioindex = 0;
//Extract the files id into an array
int[] audioFileIds=new int[]{R.raw.as,R.raw.bs};
然后在您的MediaPlayer
onCompletionListener
中放入如下内容
然后在OnCompletionListener中
mp.setOnCompletionListener(new OnCompletionListener(){
// @Override
public void onCompletion(MediaPlayer player) {
// File has ended, play the next one.
FunctionPlayFile(audioFileIds[audioindex]);
audioindex+=1; //increment the index to get the next audiofile
}
});
使用行侦听器,您将在开始和停止时获得事件。然后您必须使该方法等待(示例:)。