在Android中,可以使用一个MediaPlayer
对象来播放背景音乐。为了实现背景音乐线程随机停止的功能,可以使用一个Handler
对象来定时发送消息。
下面是一个示例代码,演示了如何实现这个功能:
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化MediaPlayer
mediaPlayer = MediaPlayer.create(this, R.raw.background_music);
mediaPlayer.setLooping(true); // 设置循环播放
// 初始化Handler
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
// 随机停止MediaPlayer
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
} else {
mediaPlayer.start();
}
// 随机生成下一个停止/播放的时间
Random random = new Random();
int delay = random.nextInt(5000) + 2000;
// 发送延时消息
handler.sendEmptyMessageDelayed(0, delay);
return false;
}
});
// 开始发送延时消息
handler.sendEmptyMessage(0);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放MediaPlayer资源
mediaPlayer.release();
// 移除所有消息和回调
handler.removeCallbacksAndMessages(null);
}
}
在上面的示例代码中,首先在onCreate()
方法中初始化了MediaPlayer
和Handler
。然后,使用Handler
发送一个延时消息,用于随机停止/播放背景音乐。在Handler
的handleMessage()
方法中,根据当前的播放状态随机停止或播放音乐,并随机生成下一个停止/播放的时间。最后,在onDestroy()
方法中释放MediaPlayer
资源,并移除所有消息和回调,以防止内存泄漏。
注意,要在AndroidManifest.xml文件中添加以下权限,以访问音频文件:
上一篇:Android MediaPlayer: Android Q及以上版本中的文件访问
下一篇:Android MediaPlayer的prepareAsync()方法出现了java.lang.IllegalStateException异常。