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来播放视频了
原文地址: http://www.cveoy.top/t/topic/iy92 著作权归作者所有。请勿转载和采集!