1

より長いオーディオファイル用のサウンドボードを作成しようとしていますが、アクティビティを閉じずにオーディオファイルを停止して再開する方法がわかりません。各オーディオファイルの長さが1分だとします。最初のオーディオファイルを20秒間再生して次のオーディオファイルを開始すると、最初のファイルの再生が停止し、2番目のファイルの再生が開始されます。ただし、最初のオーディオファイルをもう一度クリックすると、2番目のファイルは再生を停止し、最初のファイルは再生を停止します。私は助けが必要です。これは私を狂わせています。

    bAudio1 = (ImageButton) findViewById(R.id.bAudio1);
    bAudio2 = (ImageButton) findViewById(R.id.bAudio2);

    mpAudio1 = MediaPlayer.create(this, R.raw.audio1);
    mpAudio2 = MediaPlayer.create(this, R.raw.audio2);

    bAudio1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                    if(mpAudio1.isPlaying()) {
                            mpAudio1.stop();
                    } else {
                            if(mpAudio2.isPlaying()) { mpAudio2.stop(); }
                            mpAudio1.start();
                    }
            }
    });

    bAudio2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                    if(mpAudio2.isPlaying()) {
                            mpAudio2.stop();
                    } else {
                            if(mpAudio1.isPlaying()) { mpAudio1.stop(); }
                            mpAudio2.start();
                    }
            }
    });
4

1 に答える 1

1

これは私のために働いた:

public class ExampleActivity extends Activity implements OnClickListener {

private Button button1;
private Button button2;
private MediaPlayer mediaPlayer1;
private MediaPlayer mediaPlayer2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);

    button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(this);
    button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.button1:
        // play first audio clip and stop the second if playing
        if (mediaPlayer2 != null && mediaPlayer2.isPlaying()) {
            mediaPlayer2.stop();
            mediaPlayer2.release();
            mediaPlayer2 = null;
        }
        mediaPlayer1 = MediaPlayer.create(this, R.raw.song1);
        mediaPlayer1.start();
        break;
    case R.id.button2:
        // play second audio clip and stop the first if playing
        if (mediaPlayer1 != null && mediaPlayer1.isPlaying()) {
            mediaPlayer1.stop();
            mediaPlayer1.release();
            mediaPlayer1 = null;
        }
        mediaPlayer2 = MediaPlayer.create(this, R.raw.song2);
        mediaPlayer2.start();
        break;
    }
}

@Override
protected void onPause() {
    super.onPause();

    // stop the second if playing
    if (mediaPlayer2 != null && mediaPlayer2.isPlaying()) {
        mediaPlayer2.stop();
        mediaPlayer2.release();
        mediaPlayer2 = null;
    }

    // stop the first if playing
    if (mediaPlayer1 != null && mediaPlayer1.isPlaying()) {
        mediaPlayer1.stop();
        mediaPlayer1.release();
        mediaPlayer1 = null;
    }
}
于 2012-04-07T05:26:18.523 に答える