audio2を1回再生した後にaudio1を10回再生し、audio1をもう一度10回再生してから、audio3を1回再生するプログラムを作成しようとしています。アプリには、現在のオーディオと各オーディオの変更を一時停止および再開するボタンがあります。 imageViewの場合、問題は、audio1を一時停止するたびに、audio2も再生されるか、現在のオーディオが停止して次のオーディオを再生することです。どうすればオーディオをより細かく制御できますか。つまり、現在のオーディオを一時停止し、現在のオーディオが終了するまで待つ必要があります。
パブリッククラスPrincipalActivityはClassePaiを拡張します{
Thread thread;
private int currentPosition, duracaoTotal;
private MediaPlayer avemaria, intro, primeiro, segundo, terceiro, quarto,
quinto, salve;
private ImageView imagem;
private Button btnProximo, btnAnterior, btnPause;
protected Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
avemaria = MediaPlayer.create(this, R.raw.teste);
intro = MediaPlayer.create(this, R.raw.teste);
primeiro = MediaPlayer.create(this, R.raw.ave_maria);
segundo = MediaPlayer.create(this, R.raw.ave_maria);
terceiro = MediaPlayer.create(this, R.raw.terceiro_goz);
quarto = MediaPlayer.create(this, R.raw.quarto_goz);
quinto = MediaPlayer.create(this, R.raw.quinto_goz);
salve = MediaPlayer.create(this, R.raw.salve_bencao);
imagem = (ImageView) findViewById(id.imageViewGoz);
imagem.setImageResource(com.willamydotcom.osantoterco.R.drawable.g
+ getContador());
Thread thread = new Thread() {
public void run() {
play(primeiro);
// wait while the current audio plays
while (primeiro.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(avemaria);
while (avemaria.isPlaying()) {
}
play(segundo);
while (avemaria.isPlaying()) {
}
}
};
thread.start();
btnProximo = (Button) findViewById(id.btnTest);
btnProximo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (avemaria.isPlaying()) {
avemaria.start();
} else if (primeiro.isPlaying()) {
primeiro.start();
} else if (segundo.isPlaying()) {
segundo.start();
}
}
});
btnPause = (Button) findViewById(id.btnPlay);
btnPause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (avemaria.isPlaying()) {
avemaria.pause();
} else if (primeiro.isPlaying()) {
primeiro.pause();
} else if (segundo.isPlaying()) {
segundo.pause();
}
}
});
btnAnterior = (Button) findViewById(id.btnAnterior);
btnAnterior.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_principal, menu);
return true;
}
public void play(MediaPlayer audio) {
audio.start();
audio.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
imagem.setImageResource(R.drawable.g + getContador());
setContador(getContador() + 1);
}
});
}
}