正在循环播放音频 android studio
Looping to play audio android studio
谁能帮我重复播放音频?
一键播放音频
这是不重复播放音频的代码
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();
}
}
输出为check The first number()不播放任何东西,而for check The second number()只播放第一个索引,即“1”。
而两个 checksNumber () 都应该依次播放三个音频。
谁能帮帮我?
您不能使用 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();
}
谁能帮我重复播放音频? 一键播放音频
这是不重复播放音频的代码
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();
}
}
输出为check The first number()不播放任何东西,而for check The second number()只播放第一个索引,即“1”。 而两个 checksNumber () 都应该依次播放三个音频。 谁能帮帮我?
您不能使用 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();
}