Android MediaRecorder启动失败-19,启动失败,尝试删除损坏的文件

Android MediaRecorder启动失败-19,启动失败,尝试删除损坏的文件,android,android-mediarecorder,Android,Android Mediarecorder,我在我的应用程序中有一个表面视图,可以很好地工作,但除了在屏幕上有一个视频预览外,我还想同时录制视频。为此,我必须: 声明变量等: /************************ GLOBAL VARIABLES FOR VIDEO PREVIEW ********************/ /* For the surface view */ SurfaceView surfaceView; SurfaceHolder surfaceHolder; /* For saving the

我在我的应用程序中有一个表面视图,可以很好地工作,但除了在屏幕上有一个视频预览外,我还想同时录制视频。为此,我必须:

声明变量等:

/************************ GLOBAL VARIABLES FOR VIDEO PREVIEW ********************/

/* For the surface view */
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;

/* For saving the video to the device */
MediaRecorder mediaRecorder;
private static final String IMAGE_DIRECTORY_NAME = "Hello Camera";

/* For both */
Button buttonStartCameraPreview, buttonStopCameraPreview;
Camera camera;
boolean previewing = false;
然后在onCreate method()中启动记录器,设置启动/停止按钮,设置曲面视图,然后根据按钮按下激活曲面视图/视频捕获的代码:

// Set up the media recorder
initMediaRecorder();

buttonStartCameraPreview = (Button) findViewById(R.id.startCameraPreview);
buttonStopCameraPreview = (Button) findViewById(R.id.stopCameraPreview);

surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
// Set the surfaceView so it appears on top, not behind the view
surfaceView.setZOrderOnTop(true);
// Set the surfaceView background colour to magenta
surfaceView.setBackgroundColor(Color.MAGENTA);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);

buttonStartCameraPreview.setOnClickListener(new Button.OnClickListener()
{
    @Override
    public void onClick(View v) 
    {
        if(!previewing)
        {
            camera = Camera.open();
            if (camera != null)
            {
                try 
                {
                    camera.setPreviewDisplay(surfaceHolder);
                    camera.startPreview();
                    mediaRecorder.start();
                    previewing = true;
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }
    }
});
buttonStopCameraPreview.setOnClickListener(new Button.OnClickListener()
{
    @Override
    public void onClick(View v) 
    {
        if(camera != null && previewing)
        {
            camera.stopPreview();
            camera.release();
            mediaRecorder.stop();
            mediaRecorder.release();
            finish();
            camera = null;
            previewing = false;
        }
    }
});
其他相关方法包括:

public void surfaceCreated(SurfaceHolder holder) 
{
    prepareMediaRecorder();
}
以及:

应用程序加载良好,但当我按下按钮开始surface view/录制时,“应用程序已停止消息”出现(surface view仍在后台工作)

我假设这个问题与创建/覆盖目标文件以保存输出有关(根据LogCat),但我无法确定。CatLog如下:

07-13 19:12:14.608: E/MediaRecorder(25372): start failed: -19
07-13 19:12:14.608: E/MediaRecorder(25372): start failed.
07-13 19:12:14.608: E/MediaRecorder(25372): try to delete broken file:    /storage/emulated/0/Pictures/Hello Camera/VID_20140713_191211.mp4
我在清单文件中还有:

<!-- Accessing camera hardware -->
<uses-feature android:name="android.hardware.camera"
              android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


谢谢。

您曾经解决过这个问题吗?不幸的是,没有。视频正在保存到我的手机上(必须下载ASTRO file manager才能找到),但是它仍然在崩溃。谢谢。如果我找到解决方案,我会提出建议
<!-- Accessing camera hardware -->
<uses-feature android:name="android.hardware.camera"
              android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />