使用此代码,我想停止所有正在执行的声音,只播放单击的按钮,但调用释放,声音变为空,您无法再次运行声音。但如果你不调用释放,无论如何都会给我问题。我怎样才能找到解决这个难题的方法?
代码:
public MediaPlayer mediaPlayer = null;
public Boolean playing = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b1 = (Button)findViewById(R.id.b1);
b1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v){
if(mediaPlayer != null && mediaPlayer.isPlaying()) mediaPlayer.stop();
mediaPlayer = MediaPlayer.create(menu.this, R.raw.b1);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// TODO Auto-generated method stub
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
playing=true;
};
});
}
});
Button b2 = (Button)findViewById(R.id.b2);
b2.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v){
if(mediaPlayer != null && mediaPlayer.isPlaying()) mediaPlayer.stop();
mediaPlayer = MediaPlayer.create(getBaseContext(),R.raw.b2);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// TODO Auto-generated method stub
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
};
});
}
});
}});
最佳答案
我解决了这个问题:
b1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v){
if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.release();
}
mediaPlayer = MediaPlayer.create(menu.this, R.raw.b1);
mediaPlayer.start();
}});
关于android - 调用释放并播放多种声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20441813/