android8 已停止工作,关于android:Mediaplayer会在一段时间后停止工作

我有一个音板,一切正常,但是过一会儿我刚停下来播放声音时,在按钮上单击很多,这是代码:

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,我该怎么办?

您的onClick看起来很奇怪,在别的地方叫它们吗? 我希望能看到更多的信息:stackoverflow.com/questions/18459122/

要在每次使用后清理媒体播放器,请致电

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

}

});

像这样? pastebin.com/KPVhJUzt

@AaronWaller否,确定停止后或onCompletion之后

请举一个例子,因为Android Studio中的新功能,所以我没有得到它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值