1.
使用SurfaceView播放视频只需要主要下面几个地方就可以了 1. surfaceChanged也就是Suface是否创建成功 2. onPrepared 也就是MideoPlayer是否加载并准备完成 3. surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 类型必须是SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS
原因是: 打完log才发现,进入主进程之后,surfaceview的创建优先级并不高,因此在mediaPlayer开始之后,surfaceView还没有创建出来,因此会出现有声音没图像的问题
一般有两种实现方法:
一是在通过holder增加callback,监听surfaceCreate事件,在监听到之后再开始mediaPlayer的相关操作,具体可以看videoView的实现方法
二是通过按钮来实现mediaPlayer,这样也可以保证再用户按到按钮之前,surfaceView已经被创建出来了
|