要在 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 播放视频:详细步骤与代码示例

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

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