Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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
android zbar中的摄像头黑屏_Android_Barcode Scanner_Zbar - Fatal编程技术网

android zbar中的摄像头黑屏

android zbar中的摄像头黑屏,android,barcode-scanner,zbar,Android,Barcode Scanner,Zbar,我一直在我的一个android项目中工作,其中我需要集成扫描仪。我在项目中集成了Zbar扫描仪。我面临的问题有时是三星Tab 3的扫描仪区域显示黑屏。它在其他设备上工作得很好。我已经检查了nexus,帆布般的设备,它显示了完美的扫描屏幕。我的代码有问题吗?这是我的密码 private void initControls() { try { { System.loadLibrary("iconv");

我一直在我的一个android项目中工作,其中我需要集成扫描仪。我在项目中集成了Zbar扫描仪。我面临的问题有时是三星Tab 3的扫描仪区域显示黑屏。它在其他设备上工作得很好。我已经检查了nexus,帆布般的设备,它显示了完美的扫描屏幕。我的代码有问题吗?这是我的密码

private void initControls() {
        try {

            {
                System.loadLibrary("iconv");
            }

            surfaceViewFlash = (SurfaceView) mView.findViewById(R.id.PREVIEW);
            surfaceViewFlash.setVisibility(View.INVISIBLE);
            surfaceViewFlash.setVisibility(View.VISIBLE);
            mCameraScanner = getCameraInstance();
            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            previewingScanner = true;
            autoFocusHandlerScanner = new Handler();

            try {
                // Instance barcode zBarScanner
                zBarScanner = new ImageScanner();

                zBarScanner.setConfig(0, Config.X_DENSITY, 3);
                zBarScanner.setConfig(0, Config.Y_DENSITY, 3);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }

            mPreviewScanner = new CameraPreview(getActivity(), mCameraScanner, previewCb, autoFocusCB);
            FrameLayout preview = (FrameLayout) mView.findViewById(R.id.cameraPreview);
            preview.addView(mPreviewScanner);

            if (barcodeScanned) {
                barcodeScanned = false;
                mCameraScanner.setPreviewCallback(previewCb);
                mCameraScanner.startPreview();
                previewingScanner = true;
                Log.e("initControls", "initControls");
            }

        } catch (IllegalArgumentException e) {
            e.printStackTrace();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


 /**
     * A safe way to get an instance of the Camera object.
     */
    public Camera getCameraInstance() {
        Camera c = null;
        int frontId = 0, backId = 0;
        try {


            Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
            int numberOfCameras = Camera.getNumberOfCameras();
            for (int i = 0; i < numberOfCameras; i++) {
                Camera.getCameraInfo(i, cameraInfo);
                if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                    frontId = i;
                } else if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
                    backId = i;
                }

            }
            c = Camera.open(backId);
        } catch (Exception e) {
            e.printStackTrace();
            GeneralAlertDialog.createDialog(getActivity(), getString(R.string.app_name), "Camera is not working, Please try again.", new DialogDismiss() {
                @Override
                public void onDismiss() {
                    getCallBackForCloseScanner().OnCloseButtonClickOfScanner();
                }
            });

        }
        return c;
    }

 private void releaseCamera() {
        if (mCameraScanner != null) {
            mCameraScanner.cancelAutoFocus();
            previewingScanner = false;
            mCameraScanner.setPreviewCallback(null);
            mPreviewScanner.getHolder().removeCallback(mPreviewScanner);
            mCameraScanner.stopPreview();
            mCameraScanner.release();
            mCameraScanner = null;
            mPreviewScanner = null;
        }
    }

 Runnable doAutoFocus = new Runnable() {
        public void run() {

            try {
                if (previewingScanner) {
                    if (mCameraScanner == null)
                        mCameraScanner = getCameraInstance();
                    Camera.Parameters parameters = null;
                    Log.e("mCameraScanner", mCameraScanner + "");

                    if (null != mCameraScanner.getParameters()) {
                        parameters = mCameraScanner.getParameters();
                    }
                    List<String> focusModes = parameters.getSupportedFocusModes();
                    if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
                        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
                        mCameraScanner.setParameters(parameters);
                        mCameraScanner.autoFocus(autoFocusCB);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
private void initControls(){
试一试{
{
系统加载库(“iconv”);
}
surfaceViewFlash=(SurfaceView)mView.findViewById(R.id.PREVIEW);
surfaceViewFlash.setVisibility(视图不可见);
surfaceViewFlash.setVisibility(View.VISIBLE);
mCameraScanner=getCameraInstance();
getActivity().setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Grait);
previewingScanner=true;
autoFocusHandlerScanner=新处理程序();
试一试{
//实例条码扫描程序
zBarScanner=新的图像扫描仪();
zBarScanner.setConfig(0,Config.X_密度,3);
zBarScanner.setConfig(0,Config.Y_密度,3);
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
mPreviewScanner=新的CameraPreview(getActivity()、mCameraScanner、previewCb、autoFocusCB);
FrameLayout preview=(FrameLayout)mView.findviewbyd(R.id.cameraPreview);
preview.addView(mPreviewScanner);
如果(条形码扫描){
条形码扫描=假;
mCameraScanner.setPreviewCallback(previewCb);
mCameraScanner.startPreview();
previewingScanner=true;
Log.e(“initControls”、“initControls”);
}
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
}
/**
*获取摄影机对象实例的安全方法。
*/
公共摄像机getCameraInstance(){
摄像机c=null;
int frontId=0,backId=0;
试一试{
Camera.CameraInfo CameraInfo=新的Camera.CameraInfo();
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i

请帮我解决这个问题

在暂停和销毁时释放相机。当相机没有被任何资源释放,而您又重新启动它时,就会发生这种情况。希望这能对您有所帮助。

谢谢您的回复,我已经完成了有关在onPause中释放相机的编码。不,问题仍然存在。我也有这个问题吗?我注意到相机是黑色的。