Camera.release()需要30秒才能在Nexus 10中释放相机.有没有办法加快这个过程?

Dil*_*lip 12 android android-camera nexus-10 google-nexus

我正在使用以下代码在onPause中释放相机.但是线路mCamera.release()平均需要30秒才能在Nexus 10设备中释放相机.我在mCamera.release()之前和之后添加了日志记录,发现打印这些日志的时间差是30秒.

private void releaseCamera() {
    if (mCamera != null) {
        previewing = false;
        mCamera.setPreviewCallback(null);
        if(mPreview != null)
        mPreview.getHolder().removeCallback(mPreview);
        Log.e("QR","Starting to call mCamera.release()");
        mCamera.release();
        Log.e("QR","Released Camera");
        mCamera = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在调用releaseCamera()之前调用了mCamera.stopPreview()

我有什么方法可以异步地做到这一点吗?因为从Camerapreview活动到下一个活动只需不到一分钟.

编辑1:我们将预览尺寸从最高(1080x1920)缩小到中间范围(480x800),一切都开始正常.预览尺寸是否与HAL中的相机释放有关?

小智 5

您可以尝试在线程内释放相机作为解决方法,但这不是一个理想的解决方案.您可以在后台执行发布功能时启动下一个活动

   new AsyncTask() {

        @Override
        protected Object doInBackground(Object... params) {
            releaseCamera();
            return null;
        };
    }.execute();
Run Code Online (Sandbox Code Playgroud)