我使用了这篇现有文章中的代码来播放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();
}
}
也许这对你有帮助。