2015-09-28 31 views
5

Ho lavorato in uno dei miei progetti Android in cui ho bisogno di integrare lo scanner Zbar. Ho integrato lo scanner Zbar nel progetto. Il problema che sto affrontando è a volte in Samsung Tab 3 l'area dello scanner mostra lo schermo nero. Funziona perfettamente con altri dispositivi. Ho controllato in nexus, dispositivi simili alla tela e mostra uno schermo di scansione perfetto. C'è qualche problema nel mio codice? Ecco il mio codice.Schermo nero fotocamera in 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(); 
      } 
     } 
    }; 

Per favore aiutatemi a risolvere il problema.

+0

Ho anche questo problema? Nella mia nota 5 la fotocamera è nera. – Zapnologica

risposta

0

releaseCamera in pausa e su distrutto. succede quando la fotocamera non è rilasciata da alcuna risorsa e si sta di nuovo iniziando. Questo ti aiuterà.

+0

Grazie per la risposta, ho fatto il codice per quanto riguarda il rilascio della fotocamera in onPause. –

+0

problema risolto ?? – Satyavrat

+0

No, il problema persiste ancora. –

Problemi correlati