Skip to content

SurfaceView

panwj edited this page Jul 28, 2017 · 2 revisions

Android中播放视频主要有两种方式:

  • 使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型
  • 使用android自带的VideoView,这种方法太简单就不介绍了
  • 使用SurfaceView+MediaPlayer,这种方式效果比较好

SurfaceView从android 1.0就有了,十分好用。一般来说,UI对刷新都需要在UI线程中完成,但是,surfaceview可以在非UI线程中完成刷新。这样以来就很方便了,比如在线播放,就不需要自己去写handler来实现两个线程之间的通信了,直接可以在非UI线程中播放视频。

步骤:

调用player.setDataSource()方法设置要播放的资源,可以是文件、文件路径、或者URL。 调用MediaPlayer.setDisplay(holder)设置surfaceHolder,surfaceHolder可以通过surfaceview的getHolder()方法获得。 调用MediaPlayer.prepare()来准备。 调用MediaPlayer.start()来播放视频。

sufaceView.Callback接口实现,需要实现其三个方法:

void surfaceDestroyed(SurfaceHolder holder):当SurfaceHolder被销毁的时候回调void surfaceCreated(SurfaceHolder holder):当SurfaceHolder被创建的时候回调void surfaceChange(SurfaceHolder holder):当SurfaceHolder的尺寸发生变化的时候被回调

Clone this wiki locally