[英]Mediaplayer stops working after a while
我有一个音板,一切正常,但是过一会儿我刚停下来播放声音时,在按钮上单击很多,这是代码:
public class MainActivity extends AppCompatActivity{
//Sounds/Remixes MediaPlayer
MediaPlayer sound1, sound2, sound3, sound4, remix1, remix2, remix3, remix4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Sound MediaPlayers
sound1= MediaPlayer.create(this, R.raw.sound1);
sound2= MediaPlayer.create(this, R.raw.sound2);
sound3= MediaPlayer.create(this, R.raw.sound3);
sound4= MediaPlayer.create(this, R.raw.sound4);
//Remixes MediaPlayer
remix1= MediaPlayer.create(this, R.raw.remix1);
remix2= MediaPlayer.create(this, R.raw.remix2);
remix3= MediaPlayer.create(this, R.raw.remix3);
remix4= MediaPlayer.create(this, R.raw.remix4);
}
//Songs stop playing when closing/switching the App
@Override
protected void onPause() {
remix1.pause();
remix2.pause();
remix3.pause();
remix4.pause();
super.onPause();
}
//Remix onClick's
public void remix1(View view){
if(remix1.isPlaying() == true){
remix1.pause();
}else{
remix1.start();
}
}
public void remix2(View view){
if(remix2.isPlaying() == true){
remix2.pause();
}else{
remix2.start();
}
}
public void remix3(View view){
if(remix3.isPlaying() == true){
remix3.pause();
}else{
remix3.start();
}
}
public void remix4(View view){
if(remix4.isPlaying() == true){
remix4.pause();
}else{
remix4.start();
}
}
//sound onClick's
public void sound1(View view){
sound1.start();
}
public void sound2(View view){
sound2.start();
}
public void sound3(View view){
sound3.start();
}
public void sound4(View view){
sound4.start();
}
}
这是我的代码,只有4种声音和4种混音。
声音长3秒,重新混音3分钟。
这是我的应用程序,您可以尝试一下,并且有时按钮会停止工作: https : //play.google.com/store/apps/details?id=com.aaron.waller.angelasoundboard
我发现的唯一解决方案是每次使用后都要清理MediaPlayer,我该怎么办?
要在每次使用后清理媒体播放器,请致电
mediaPlayer.release();
但是,如果您需要的只是在create
方法之后将mediaPlayer返回其状态
mediaPlayer.reset();
应该足够了
UPD
在您的情况下,请为您使用的每个mediaPlayer将此代码添加到onCreate
中。
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.reset();
//if reset doesnt give you what you need use mp.release() instead
//but dont forget to call MediaPlayer.create
//before next mediaPlayer.start() method
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.