Android 多媒体框架支持播放各种常见媒体类型,因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用 MediaPlayer
API。
1. MediaPlayer初始化
mMediaPlayer = MediaPlayer()
mMediaPlayer?.let {
it.setAudioStreamType(AudioManager.STREAM_MUSIC)
it.setOnCompletionListener(this)
it.setOnErrorListener(this)
}
MediaPlayer初始化只需要直接创建即可,添加播放完成跟错误监听。一般我们初始化还可以首次将上次播放的音乐跟播放进度设置进去,mMediaPlayer?.setDataSource(music.data)是设置播放音乐数据,mMediaPlayer?.seekTo(lastMusicProgress)是设置播放进度,将播放进度设置到上次播放的位置
private fun initMediaPlayer(position: Int = 0) = launchMain {
val lastMusicProgress = LocalKV.getIns().getInt(Constant.LAST_PLAY_PROGRESS, 0)
val music: Music = mPlayList[position]
if (music.data != null) {
try {
mMediaPlayer?.reset()
mMediaPlayer?.setDataSource(music.data)
mMediaPlayer?.prepare()
mMediaPlayer?.seekTo(lastMusicProgress)
mLastMusic = music
} catch (e: Exception) {
LogUtil.i(TAG, "initMediaPlayer error=${e.message}")
}
}
}
2. 播放音乐
如果是同一首歌而且只是暂停可以直接调用MediaPlayer?.start()继续播放,如果不是同一首歌需要重新调用mMediaPlayer?.setDataSource(it.data)设置播放音乐,然后再调用start去播放,如果该首音乐有问题可以直接播放下一首。
fun play() {
if (mMusicPosition >= mPlayList.size - 1) {
mMusicPosition = mPlayList.size - 1
LogUtil.i(TAG, "play position exceed music list")
}
mCurrentMusic = mPlayList[mMusicPosition]
mCurrentMusic?.let {
if (
标签:mMediaPlayer,MediaPlayer,mPlayList,music,android,播放,data
From: https://blog.csdn.net/u011324501/article/details/143893650