2015-09-28 32 views
5

Zbar tarayıcımın entegre edilmesi gereken bir android projemde çalışıyorum. Zbar tarayıcısını projeye entegre ettim. Karşı karşıya olduğum sorun bazen Samsung Tab 3'te tarayıcı alanı siyah ekran gösteriyor. Diğer cihazlarda mükemmel çalışıyor. Nexus'u, tuval gibi cihazları kontrol ettim ve mükemmel bir tarama ekranı gösteriyor. Kodumda herhangi bir sorun var mı? İşte benim kodum.Android zbar'da kamera siyah ekranı

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

Lütfen sorunu çözmek için bana yardımcı olun.

+0

Ayrıca bu sorunu yaşıyorum? Notumda 5 kamera siyah. – Zapnologica

cevap

0

releaseBamera duraklatıldı ve yok edildi. kamera herhangi bir kaynak tarafından serbest bırakılmadığında ve tekrar başladığınızda gerçekleşir. bu size yardımcı olacaktır.

+0

Cevabınız için teşekkürler, onPause'da serbest bırakma kamerasıyla ilgili kodlama yaptım. –

+0

sorun çözüldü? – Satyavrat

+0

Hayır, sorun hala devam ediyor. –