Application lost the surface
java.io.IOException: invalid preview surface
at android.media.MediaRecorder._prepare(Native Method)
at android.media.MediaRecorder.prepare(MediaRecorder.java:544)
at org.szga.MainActivity.yjbjsendVideo(MainActivity.java:910)
at org.szga.MainActivity.onClick(MainActivity.java:493)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3695)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)用摄像头拍摄视频,在调用recorder.prepare(); 时报错。
源代码如下:
                videopreview = (SurfaceView)findViewById(R.id.yjvideo);
videopreview.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

recorder = new MediaRecorder(); recorder.setPreviewDisplay(videopreview.getHolder().getSurface());
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoSize(800, 480);
recorder.setVideoFrameRate(15);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(videoFile.getAbsolutePath());
try {
recorder.prepare();
recorder.start();

Thread.sleep(10000);   
recorder.stop();
            recorder.reset();
            recorder.release();
            recorder=null;
            mCamera.lock();
Tools.getUploadVideoTast(null, videoFile.getPath());
} catch (IllegalStateException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}