Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android视频录制错误_Java_Android_Android Camera - Fatal编程技术网

Java Android视频录制错误

Java Android视频录制错误,java,android,android-camera,Java,Android,Android Camera,有人能指出我犯的错误吗?我试图录制一段短视频,但不知怎的,它找到了崩溃的方法 源代码: public class Start_recording extends Activity implements SurfaceHolder.Callback { MediaRecorder recorder; SurfaceHolder surfaceHolder; SurfaceView myVideoView; Camera camera; @Override

有人能指出我犯的错误吗?我试图录制一段短视频,但不知怎的,它找到了崩溃的方法

源代码:

public class Start_recording extends Activity implements SurfaceHolder.Callback
{
    MediaRecorder recorder;
    SurfaceHolder surfaceHolder;
    SurfaceView myVideoView;
    Camera camera;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        camera = Camera.open();
        camera.unlock();
        recorder = new MediaRecorder();
        setContentView(R.layout.activity_main_rst);
        myVideoView = (SurfaceView)findViewById(R.id.surface_camera);
        surfaceHolder = myVideoView.getHolder();
        surfaceHolder.addCallback(this);
        initMediaRecorder();
        boolean exists = (new File(android.os.Environment.getExternalStorageDirectory() + "/Record/")).exists();

        if (!exists)
        {
            new File(android.os.Environment.getExternalStorageDirectory() + "/Record/").mkdirs();
        }

        try
        {
            recorder.prepare();  // This is the line of error.
            recorder.start();
            Thread.sleep(36000);
            recorder.stop();
            setupActionBar();
        }
        catch(Exception e)
        {
            Log.v("Error is there : ",e.toString());
            e.printStackTrace();
        }
    }

    public void initMediaRecorder()
    {
        try
        {


            recorder.setPreviewDisplay(surfaceHolder.getSurface());
            recorder.setCamera(camera);
            recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
            recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
            recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            recorder.setOutputFile(android.os.Environment.getExternalStorageDirectory()+"/Record/test.3gp");
            recorder.setMaxDuration(300000);
        }
        catch(Exception f)
        {
            Log.v("Exception here : ",f.toString());
            f.printStackTrace();
        }
    }
}
错误:

E/MediaRecorderJNI(1575): Application lost the surface
V/Error is there :(1575): java.io.IOException: invalid preview surface
W/System.err(1575): java.io.IOException: invalid preview surface
W/System.err(1575):     at android.media.MediaRecorder._prepare(Native Method)
W/System.err(1575):     at android.media.MediaRecorder.prepare(MediaRecorder.java:666)
W/System.err(1575):     at com.example.project.Start_recording.onCreate(Start_recording.java:51)

我已在清单文件中正确添加了权限,并设置了setPreviewDisplay()。但我得到的预览曲面无效。请更正。

必须使用
SurfaceHolder.Callback
才能在曲面真正创建后开始录制