getParameters failed (empty parameters) 问题解决

最近改代码,删掉了原来录制视频做处理的逻辑,改用onPreviewFrame来回调到预览帧处理。

修改后出现了这个错误getParameters failed (empty parameters)

出现这个错误大概率是在采集视频,需要认真的管理Camera对象,以及跟MediaRecorder类的协调。当使用Camera对象记录视频时,除了Camera.open()和Camera.release()方法的调用以外,还必须管理Camera.lock()和Camera.unlock()方法的调用,从而允许MediaRecorder对象访问Camera硬件。
unlock 应放置在 camera.setParameters(parameters); 后面

//设置Camera 的代码
    camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
    camera.lock();
    Camera.Parameters parameters = camera.getParameters();
    camera.setDisplayOrientation(90);
    camera.enableShutterSound(false);
    parameters.setPreviewFrameRate(25);
    camera.setParameters(parameters);
    camera.unlock();
    //后面跟设置MediaRecorder的代码

getParameters failed (empty parameters) 问题解决_第1张图片

  • Probably the most common reason would be closing/releasing the camera while still using it afterward.
  • This can be especially problematic if you are using the Camera object on multiple threads without synchronizing access to the Camera.
  • Make sure you only ever have a single thread accessing the Camera at a time.

最大的可能是Camera释放不彻底,关闭或释放后仍旧在使用。或者是多个线程可能在不加锁的情况下争用Camera。应保证每个时间最多只有一个线程访问Camera。

此处参考Correct handling of exception: “getParameters failed (empty parameters)”

解决这个问题,可以在出问题的代码前后加上lock和unlock,在声明Parameters前加lock,防止其他的线程访问,在 camera.setParameters(parameters); 后面设置unlock,使mediarecorder可以访问。

在出错的地方,看下是否没有设置,加这两行试一下。
getParameters failed (empty parameters) 问题解决_第2张图片

你可能感兴趣的:(Android开发,getParameters,failed,(empty,paramet)