0

私のアプリケーションには 4 つの ToggleButtons があります。それらはすべて、アプリでサウンドをループさせるためのものです。つまり、最初に ToggleButoon をクリックしてその状態が on になると、音楽の再生が開始され、その状態がONになるまでループし続けます。残りのトグルボタンと同じです。それらは同時に (すべて)オンになる可能性があるため、4 つのメディアプレーヤーをループさせる予定です。 これが最初の ToggleButton のコードの平和です。これまでのところ、1 つでも運がありません....

    public MediaPlayer resourcePlayer;
    Context appContext = getApplicationContext();
    resourcePlayer = MediaPlayer.create(appContext,R.raw.loop1);
    .....
    .....
    public void onClick (View v){
    switch (v.getId()) {
    case R.id.toggleButton1:
    boolean on = ((ToggleButton) v).isChecked();

    if (on) {
    resourcePlayer.start();
    resourcePlayer.setLooping(true)
    }
    else {
    resourcePlayer.stop();
    }

    break;
    }

ToggleButton をクリックしても何も起こらず、電話で状態が変化しているだけで、LogCat もclearです。ありがとう )
UPD1: 現在はループしていますが、状態を変更しても停止せず、ループし続けます。
UPD2: resourcePlayer はメイン アクティビティのパブリックです
UPD3: 重複を作成しないように、MediaPlayer 変数を onCreate メソッドに取り出しました。再生して停止しますが、その後初めて Logcat にエラー メッセージが表示されます

    MediaPlayer start called in state 0
    ....
    ....
    MediaPlayer stop called in state 0
4

2 に答える 2

1

メディアプレーヤーの新しいインスタンスを作成し続けているためだと思います。そのため、現在再生中のものではなく、新しく作成されたメディアプレーヤーオブジェクトに常に停止コマンドを送信しています。

于 2012-11-29T07:51:46.470 に答える
1

resourcePlayer.setLooping(true); を使用する必要があります。または偽

UPD3 の場合:

resourcePlayer を停止しているため、音源を再割り当てする必要がありますが、あなたの場合は、初めて呼び出された oncreate メソッドでのみ割り当てられます。そのため、停止後に再生するたびに、再初期化する必要があります。

于 2012-11-29T05:53:52.443 に答える