2013-01-24 33 views
8

我在网上搜索过,我找不到1001错误。几秒钟后,我得到相机100错误,但我无法找出第一个错误是什么。有没有人有任何想法?安卓相机错误1001 - 那是什么?

+0

什么都这是我回滚到我的代码的早期版本固定的,但我仍想知道跆拳道是1001错误,所以我能避免它在未来。 –

回答

5

我在S3上遇到了这个错误。我相信我已将其追踪到MediaRecorder如何使用相机预览表面。在我的情况下,当我试图开始录制时,预览显示重置。我解决它通过清理我的代码,只是使用的电话设置,启动和停止在下面的SurfaceView实现(从Android Camera developer guide)预览显示:

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { 
private SurfaceHolder mHolder; 
private Camera mCamera; 

public CameraPreview(Context context, Camera camera) { 
    super(context); 
    mCamera = camera; 

    // Install a SurfaceHolder.Callback so we get notified when the 
    // underlying surface is created and destroyed. 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
    // deprecated setting, but required on Android versions prior to 3.0 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
} 

public void surfaceCreated(SurfaceHolder holder) { 
    // The Surface has been created, now tell the camera where to draw the preview. 
    try { 
     mCamera.setPreviewDisplay(holder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     Log.d(TAG, "Error setting camera preview: " + e.getMessage()); 
    } 
} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    // empty. Take care of releasing the Camera preview in your activity. 
} 

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
    // If your preview can change or rotate, take care of those events here. 
    // Make sure to stop the preview before resizing or reformatting it. 

    if (mHolder.getSurface() == null){ 
     // preview surface does not exist 
     return; 
    } 

    // stop preview before making changes 
    try { 
     mCamera.stopPreview(); 
    } catch (Exception e){ 
     // ignore: tried to stop a non-existent preview 
    } 

    // set preview size and make any resize, rotate or 
    // reformatting changes here 

    // start preview with new settings 
    try { 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 

    } catch (Exception e){ 
     Log.d(TAG, "Error starting camera preview: " + e.getMessage()); 
    } 
} 
} 
3

只是想我要在这里增加一个职位的未来参考。这个问题困扰了我很长一段时间。 事实证明,我的问题是由不正确的预览大小引起的,虽然解析集是从getSupportedPictureSize方法获得的。

因此,例如,你可以得到的尺寸如下:

//first entry in list is 1392x1392 for front facing camera on an S3 
List<Camera.Size> supportedPictureSizes = params.getSupportedPictureSizes(); 

设置这个分辨率或忽略了产品总数设置图片大小将导致可怕的错误1001

如果遇到这种任何其他设备,我会建议尝试不同的图片尺寸。

0

所以还有另一个原因,为什么我在我的Galaxy S3上使用它。我在使用TextureView显示我的相机预览,并在成功预览后按主页按钮,然后再次输入应用程序时出现此可怕错误。在onResume()函数中,我再次启动了预览,发现我没有在onSurfaceTextureDestroyed()函数中释放SurfaceTexture实例变量。

我加释放行此功能,它现在看起来像这样和完美的作品:

@Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { 
    mSurfaceTexture = null; //This was the offending culprit. 

    releaseMediaPlayer(); 
    releaseVideoRecorder(); 
    releaseCamera(); 

    return false; 
} 
0

在我的情况下,三星S3,视频尺寸参数没有设置,这导致1001错误。使用预览大小在媒体记录器上设置视频大小解决了问题。但是,此更改可能会在其他设备上失败,因为参数可能会或可能不会在所有设备中可用/设置。下面的代码解决了设备的最:

if(params.get("video-size") != null && params.get("video-size").isEmpty()) { 
    int videoWidth = params.getPreviewSize().width; 
    int videoHeight = params.getPreviewSize().height; 
    mediaRecorder.setVideoSize(videoWidth, videoHeight); 
} else { 
    mediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight); 
}