Java 一次只能播放一个音频文件?

Java 一次只能播放一个音频文件?,java,android,loops,audio,Java,Android,Loops,Audio,我如何使它只播放我选择的声音,直到我按下另一个ImageButton,这样它们就不会相互重叠 public class MainActivity extends AppCompatActivity { MediaPlayer leaf,water,fire,wind; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

我如何使它只播放我选择的声音,直到我按下另一个ImageButton,这样它们就不会相互重叠

public class MainActivity extends AppCompatActivity {
    MediaPlayer leaf,water,fire,wind;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        leaf=MediaPlayer.create(MainActivity.this,R.raw.forest);
        water=MediaPlayer.create(MainActivity.this,R.raw.sea);
        fire=MediaPlayer.create(MainActivity.this,R.raw.fire);
        wind=MediaPlayer.create(MainActivity.this,R.raw.wind);
    }
    public void playleaf(View view ) {
        leaf.setLooping(true);
        leaf.start();
    }
    public void playwater(View view ) {
        water.setLooping(true);
        water.start();
        water.start();
    }
    public void playfire(View view ) {
        fire.setLooping(true);
        fire.start();
    }
    public void playwind(View view ) {
        wind.setLooping(true);
        wind.start();
    }
}

像这样做

MediaPlayer player;

public void playleaf(View view) {

    stopMedia();
player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            player.setLooping(true);
            player.start();
        }
    });
}

public void playwater(View view) {
    stopMedia();

player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            player.setLooping(true);
            player.start();
        }
    });
}

private void stopMedia() {
    if (player != null) {
        player.release();
        player = null;
    }
}

public void playfire(View view) {
    stopMedia();

player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            player.setLooping(true);
            player.start();
        }
    });
}

public void playwind(View view) {
    stopMedia();

player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            player.setLooping(true);
            player.start();
        }
    });
}

为什么需要创建不同的
MediaPlayer
实例?您可以创建一个实例。谢谢,我在这部分得到一个错误(R.raw.laef);错误:找不到适用于setDataSource(int)方法MediaPlayer的方法。setDataSource(String)不适用