当在第一个屏幕上播放时,Android的声音会被切断



我使用了这篇现有文章中的代码来播放MP3文件:

package com.mjr.testsound
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
val mp: MediaPlayer = MediaPlayer.create(applicationContext, R.raw.guitar3)
mp.start()
}
setContentView(R.layout.activity_main)
}
}

奇怪的是,如果在MAIN启动活动中播放,它会在一秒钟后停止播放,但如果在第二个活动中播放则效果良好。知道发生了什么事吗?

此外,我知道活动不会终止,我已经记录了活动的生命周期,并且在记录OnPause之前就已经中断了。

上周我在实现媒体播放器时遇到了类似的问题。您必须小心地正确启动它并释放资源。

结合CompletionListener,我得到了一个有效的解决方案。在此之前,我遇到过无法重现的故障。

我已经将整个东西打包到方法playSound()中。如果单击了我的某个按钮,就会在onClick事件中调用此方法。

Mediaplayer首先在活动中初始化为:

MediaPlayer soundTest = null; 

相关方法:

public void playSound() {
try {
if (soundTest != null){
soundTest.reset();
soundTest.release();
soundTest = null;
}
soundTest = MediaPlayer.create(this, R.raw.coins);
soundTest.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (mp != null) {
mp.reset();
mp.release();
soundTest = null;
}
}
});
soundTest.start();
} catch (Exception e) {
e.printStackTrace();
}
}

也许这对你有帮助。

最新更新