要在Android中使用MediaPlayer和SurfaceView来播放视频,需要按照以下步骤进行操作:

  1. 在XML布局文件中添加一个SurfaceView组件:
<SurfaceView
    android:id="@+id/surfaceView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. 在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()
    }
}
  1. 调用MediaPlayer的setDisplay方法将SurfaceHolder与MediaPlayer关联起来。

  2. 设置MediaPlayer的数据源,可以是一个视频文件的路径或者一个网络视频的URL。

  3. 为MediaPlayer设置一个OnPreparedListener,当MediaPlayer准备好后开始播放视频。

  4. 调用MediaPlayer的prepareAsync方法准备MediaPlayer。

  5. 在SurfaceHolder的surfaceDestroyed回调方法中释放MediaPlayer。

需要注意的是,在AndroidManifest.xml文件中添加以下权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />

同时,在代码中要处理一些异常情况,如MediaPlayer准备失败、网络连接失败等。

这样就可以使用MediaPlayer和SurfaceView来播放视频了

Android kotlin MediaPlayer+SurfaceView 使用详细与代码

原文地址: http://www.cveoy.top/t/topic/iy92 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录