Black camera screen in android zbar

I worked in one of my Android projects in which I need to integrate a Zbar scanner. I included the Zbar scanner in the project. The problem I am facing, sometimes in Samsung Tab 3 has a scanner area showing a black screen. It works great on other devices. I checked on devices similar to canvas and it shows an excellent scan screen. Are there any problems in my code? Here is my code.

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(); } } }; 

Please help me solve the problem.

+5
source share
1 answer

releaseCamera on pause and on destroyed. this happens when the camera is not released by any resource, and you start it again. Hope this helps you.

0
source

Source: https://habr.com/ru/post/1232457/


All Articles