2015-09-28 28 views
5

Tôi đã làm việc trong một trong những dự án Android của mình mà tôi cần tích hợp máy quét Zbar. Tôi đã tích hợp máy quét Zbar trong dự án. Vấn đề tôi đang phải đối mặt là đôi khi trong Samsung Tab 3 có khu vực máy quét cho thấy màn hình màu đen. Nó hoạt động hoàn hảo trong các thiết bị khác. Tôi đã kiểm tra trong các thiết bị giống như canvas, và nó cho thấy màn hình quét hoàn hảo. Có vấn đề gì trong mã của tôi không? Đây là mã của tôi.Màn hình màu đen của máy ảnh trong android zbar

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

Hãy giúp tôi giải quyết vấn đề.

+0

Tôi cũng gặp sự cố này? Trên ghi chú của tôi 5 máy ảnh màu đen. – Zapnologica

Trả lời

0

releaseCamera khi tạm dừng và bị hủy. nó xảy ra khi máy ảnh không được phát hành bởi bất kỳ tài nguyên nào và bạn lại bắt đầu nó. vì vậy điều này sẽ giúp bạn.

+0

Cảm ơn bạn đã trả lời, tôi đã thực hiện mã hóa liên quan đến việc phát hành máy ảnh ở chế độ onPause. –

+0

vấn đề được giải quyết? – Satyavrat

+0

Không, sự cố vẫn tiếp diễn. –

Các vấn đề liên quan