任何人都可以帮助我重复播放音频吗? 因此,只需点击一下即可按顺序播放音频
这是播放音频而不重复的代码
private void panggilAntrian(){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.nomor);
panggil.start();
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor("158");
}
});
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.silahkan);
panggil.start();
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.loket);
panggil.start();
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor("158");
}
});
}
});
}
});
}
代码中的有一个功能,可以重复每个数字来播放音频。 重复播放音频的功能是这个
private void cekNomor(String kata){
final String[] noPanggil = kata.split("(?<=\\G.{1})");
for(i=0; i<noPanggil.length; i++){
switch (noPanggil[i]){
case "0":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.nol);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.nol);
}
});
}
break;
case "1":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.satu);
Log.e("SUARA", noPanggil[i]);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.satu);
}
});
}
break;
case "2":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.dua);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.dua);
}
});
}
break;
case "3":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.tiga);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.tiga);
}
});
}
break;
case "4":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.empat);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.empat);
}
});
}
break;
case "5":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.lima);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.lima);
Log.e("SUARA", noPanggil[i]);
}
});
}
break;
case "6":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.enam);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.enam);
}
});
}
break;
case "7":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.tujuh);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.tujuh);
}
});
}
break;
case "8":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.delapan);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.delapan);
Log.e("SUARA", noPanggil[i]);
}
});
}
break;
case "9":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.sembilan);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.sembilan);
}
});
}
break;
}
panggil.start();
}
}
输出用于检查第一个数字()不播放任何内容,而对于检查第二个数字()仅播放第一个索引,即&#34; 1&#34;。 而两个checksNumber()都应该按顺序播放三个音频。 有谁可以帮助我?
答案 0 :(得分:0)
你不能使用for循环来做这个,因为这是同步编程,你的循环不会等到你的声音完成再循环再播放其他歌曲。
你可以解决这个问题的方法之一是制作递归函数,这样你就可以在onCompletion上再次调用它,只需要以不同的数字开头:
旁注:请注意,我没有测试此代码,我不确定它是否会起作用,我只是想让你朝着正确的方向前进。
private void cekNomor(String kata, i){
final String[] noPanggil = kata.split("(?<=\\G.{1})");
switch (noPanggil[i]){
case "0":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.nol);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "1":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.satu);
Log.e("SUARA", noPanggil[i]);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "2":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.dua);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "3":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.tiga);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "4":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.empat);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "5":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.lima);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "6":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.enam);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);;
}
});
}
break;
case "7":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.tujuh);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "8":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.delapan);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
case "9":
if(i==0){
panggil = MediaPlayer.create(AntrianLoket.this, R.raw.sembilan);
}else{
panggil.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cekNomor(String kata, ++i);
}
});
}
break;
}
panggil.start();
}