Я новичок в java. Таким образом, программа должна принимать введенный пользователем текст, и если есть «a», он будет воспроизводить звук, если есть «b», он будет воспроизводить b-звук. И он должен воспроизводить эти звуки один за другим, даже если есть несколько «a» или «b». Вот мой код:Воспроизведение аудиофайлов по одному?
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{
}
}
}
});
Проблема в том, что он одновременно запускает звуковые файлы. Я попытался добавить некоторый OnCompletionListener, но я не знаю, что с ним делать. Помоги мне, пожалуйста.
Используйте прослушиватель строк, и вы получите события при запуске и остановке. Затем вы должны заставить метод ждать (пример: http://stackoverflow.com/questions/289434/how-to-make-a-java-thread-wait-for-another-threads-output). – Mizuho