用kotlin开发一个基于MediaPlayer的简单音乐播放器,实现一个简单的播放器,类似网易云音乐形式,功能包括: 1. 播放、暂停,停止,退出功能; 2. 后台播放功能(选做); 3. 使用SeekBar组件显示播放进度条,拖动进度条能够改变播放进度。
时间: 2024-02-21 18:56:43 浏览: 148
好的,我可以为您提供基本的代码框架,用于实现一个基于MediaPlayer的简单音乐播放器,使用Kotlin语言编写:
```kotlin
import android.media.MediaPlayer
import android.os.Bundle
import android.os.Handler
import android.os.Message
import android.view.View
import android.widget.SeekBar
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity(), View.OnClickListener {
private lateinit var mediaPlayer: MediaPlayer
private var isPlaying: Boolean = false
private var totalTime: Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initMediaPlayer()
play_button.setOnClickListener(this)
pause_button.setOnClickListener(this)
stop_button.setOnClickListener(this)
seek_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
if (fromUser) {
mediaPlayer.seekTo(progress)
}
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
override fun onStopTrackingTouch(seekBar: SeekBar?) {}
})
val handler = object : Handler() {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
if (mediaPlayer != null) {
val currentPosition = mediaPlayer.currentPosition
seek_bar.progress = currentPosition
}
this.sendEmptyMessageDelayed(0, 1000)
}
}
handler.sendEmptyMessageDelayed(0, 1000)
}
private fun initMediaPlayer() {
mediaPlayer = MediaPlayer.create(this, R.raw.song)
mediaPlayer.isLooping = true
mediaPlayer.setOnPreparedListener {
totalTime = mediaPlayer.duration
seek_bar.max = totalTime
}
}
override fun onClick(v: View?) {
when (v?.id) {
R.id.play_button -> {
if (!isPlaying) {
mediaPlayer.start()
isPlaying = true
}
}
R.id.pause_button -> {
if (isPlaying) {
mediaPlayer.pause()
isPlaying = false
}
}
R.id.stop_button -> {
if (isPlaying) {
mediaPlayer.stop()
mediaPlayer.prepare()
isPlaying = false
}
}
}
}
override fun onDestroy() {
super.onDestroy()
if (mediaPlayer != null) {
mediaPlayer.stop()
mediaPlayer.release()
}
}
}
```
这个代码框架中,我们使用了MediaPlayer来实现音乐播放,使用SeekBar来显示播放进度条,并且可以通过拖动SeekBar来改变播放进度。同时,我们也实现了播放、暂停、停止、退出等基本功能。如果您需要实现后台播放功能,可以使用Service和Notification来实现。
阅读全文