SurfaceView surfaceCreated不会被调用

阔活洵信 2014-06-06 11:08:35
做一个视频录制的东西,不知道为什么,surfaceCreated不会被调用

public class RecorderActivity extends Activity implements SurfaceHolder.Callback ,MediaRecorder.OnErrorListener,
MediaRecorder.OnInfoListener{

private MediaRecorder mMediaRecorder = null;
private boolean mMediaRecorderRecording = false;
private SurfaceView mSurfaceView = null;
private SurfaceHolder mSurfaceHolder = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 选择支持半透明模式,在有surfaceview的activity中使用。
getWindow().setFormat(PixelFormat.TRANSLUCENT);
// 去掉标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_recorder);
mSurfaceView = (SurfaceView) this.findViewById(R.id.surfaceView1);
SurfaceHolder holder = mSurfaceView.getHolder();
holder.addCallback(this);
//mSurfaceHolder= mSurfaceView.getHolder();
//mSurfaceHolder.addCallback(this);
initializeVideo();
}



@Override
public void surfaceCreated(SurfaceHolder holder) {
// 将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder
mSurfaceHolder = holder;
}


理论上,如果surfaceCreated调用了,mSurfaceHolder 一定不会是空的,而在initializeVideo()中使用时,mSurfaceHolder 为空,求教怎么破?
...全文
996 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
阔活洵信 2014-06-10
  • 打赏
  • 举报
回复
引用 4 楼 youngc527 的回复:
加上这一句试试吧 holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
依然不行啊。。。而且在高版本的里面这个方法是弃用的。。。
阔活洵信 2014-06-10
  • 打赏
  • 举报
回复
我知道了,,,surfaceCreated()是能调用的,不是onCreate()时就调用,而是在onCreate()运行完了之后,主线程空闲出来了才开始调用,所以initializeVideo()不能放在onCreate()里面,最好的方法用子线程跑initializeVideo(),让他暂停个300ms,就可以了。。。
Darcy杨 2014-06-09
  • 打赏
  • 举报
回复
加上这一句试试吧 holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
阔活洵信 2014-06-09
  • 打赏
  • 举报
回复
好多天了还是没人回呀。。。。。
阔活洵信 2014-06-06
  • 打赏
  • 举报
回复
引用 1 楼 u014765620 的回复:
理论上,如果surfaceCreated调用了,mSurfaceHolder 一定不会是空的,而在initializeVideo()中使用时,mSurfaceHolder 为空,求教怎么破? 我也不会,帮你顶一下吧。。。
多谢。。哎。。求天上掉下个大神指教吧
十三邵 2014-06-06
  • 打赏
  • 举报
回复
理论上,如果surfaceCreated调用了,mSurfaceHolder 一定不会是空的,而在initializeVideo()中使用时,mSurfaceHolder 为空,求教怎么破? 我也不会,帮你顶一下吧。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧