Android - 循环 Activity 以重复 MediaPlayer

标签 android loops android-activity media-player imagebutton

我正在尝试为较长的音频文件创建一个音板,但不知道如何在不关闭 Activity 的情况下停止音频文件并重新启动它。假设每个音频文件长一分钟。如果我播放第一个音频文件 20 秒并开始下一个音频文件,第一个停止播放,第二个开始播放。但是,如果我再次单击第一个音频文件,第二个将停止播放,而第一个则不会。我需要帮助。这让我发疯。

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

最佳答案

这对我有用:

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

关于Android - 循环 Activity 以重复 MediaPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051527/

相关文章:

linux - 创建具有名称控制的文件

c++ - 我在迭代 map 并更改其中的值时遇到问题

linux - 从文件中的一组字符串中替换一个字符串 - SED

android - 如何在运行时处理 android Intent ?

java - 拍照后显示 fragment

android - 如何在 Android 中创建仪表?

android - 禁用 Activity 中的电源按钮

java - 9patch 图像不工作

android - 如何为其他非FrameLayout View 设置前景属性

android - 在 ViewPager 中重新加载或通知 Fragment 的数据