Java 一次只能播放一个音频文件?
我如何使它只播放我选择的声音,直到我按下另一个ImageButton,这样它们就不会相互重叠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
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)不适用