播放多媒体文件
播放音频
播放音频文件一般用MediaPlayer类实现。
MediaPlayer有多个方法可以使用,最常用的有
- setDataSource 用于设置mp3音频
- prepare 用于初始化
- reset 用于重新播放音乐
- pause 暂停
- start 开始
- release 销毁
看看核心代码
class MainActivity : AppCompatActivity() {
private val mediaPlayer = MediaPlayer()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initMediaPlayer()
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.play.setOnClickListener {
if (!mediaPlayer.isPlaying){
mediaPlayer.start()
}
}
binding.pause.setOnClickListener {
if (mediaPlayer.isPlaying){
mediaPlayer.pause()
}
}
binding.stop.setOnClickListener {
if (mediaPlayer.isPlaying){
mediaPlayer.reset()
initMediaPlayer()
}
}
}
private fun initMediaPlayer(){
val assetManager = assets
val fd = assetManager.openFd("music.mp3")
mediaPlayer.setDataSource(fd.fileDescriptor,fd.startOffset,fd.length)
mediaPlayer.prepare()
}
override fun onDestroy() {
super.onDestroy()
mediaPlayer.stop()
mediaPlayer.release()
}
}
非常简单
播放视频
视频主要由ViedoView类来实现,它的方法和MediaPlayer类似。
通过实例来学习吧!
package com.example.mediapalyer
import android.media.MediaPlayer
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.MediaStore.Video
import android.widget.VideoView
import com.example.mediapalyer.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val uri = Uri.parse("android.resource://$packageName/${R.raw.video}")
binding.viedoview.setVideoURI(uri)
binding.play.setOnClickListener {
if (!binding.viedoview.isPlaying){
binding.viedoview.start()
}
}
binding.pause.setOnClickListener {
if (binding.viedoview.isPlaying){
binding.viedoview.pause()
}
}
binding.replay.setOnClickListener {
if (binding.viedoview.isPlaying){
binding.viedoview.resume()
}
}
}
override fun onDestroy() {
super.onDestroy()
val video = findViewById<VideoView>(R.id.viedoview)
video.suspend()
}
}
至此就是简单的多媒体功能实现。