Android Kotlin MediaPlayer 与 SurfaceView 播放视频:详细步骤与代码示例
要在 Android 中使用 MediaPlayer 和 SurfaceView 来播放视频,需要按照以下步骤进行操作:
- 在 XML 布局文件中添加一个 SurfaceView 组件:
<SurfaceView
android:id='@+id/surfaceView'
android:layout_width='match_parent'
android:layout_height='match_parent' />
- 在 Activity 或 Fragment 中获取 SurfaceView 的实例,并为其添加一个回调接口的实现:
class MainActivity : AppCompatActivity(), SurfaceHolder.Callback {
private lateinit var surfaceView: SurfaceView
private lateinit var mediaPlayer: MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
surfaceView = findViewById(R.id.surfaceView)
surfaceView.holder.addCallback(this)
}
override fun surfaceCreated(holder: SurfaceHolder) {
mediaPlayer = MediaPlayer()
mediaPlayer.setDisplay(holder)
mediaPlayer.setDataSource('video_url_or_file_path')
mediaPlayer.setOnPreparedListener {
mediaPlayer.start()
}
mediaPlayer.prepareAsync()
}
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
// 不需要实现
}
override fun surfaceDestroyed(holder: SurfaceHolder) {
mediaPlayer.release()
}
}
-
调用 MediaPlayer 的 setDisplay 方法将 SurfaceHolder 与 MediaPlayer 关联起来。
-
设置 MediaPlayer 的数据源,可以是一个视频文件的路径或者一个网络视频的 URL。
-
为 MediaPlayer 设置一个 OnPreparedListener,当 MediaPlayer 准备好后开始播放视频。
-
调用 MediaPlayer 的 prepareAsync 方法准备 MediaPlayer。
-
在 SurfaceHolder 的 surfaceDestroyed 回调方法中释放 MediaPlayer。
需要注意的是,在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name='android.permission.WAKE_LOCK' />
<uses-permission android:name='android.permission.INTERNET' />
同时,在代码中要处理一些异常情况,如 MediaPlayer 准备失败、网络连接失败等。
这样就可以使用 MediaPlayer 和 SurfaceView 来播放视频了。
原文地址: https://www.cveoy.top/t/topic/qggS 著作权归作者所有。请勿转载和采集!