0

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);

        }
    });

}

}

4

1 に答える 1