2015-09-28 33 views
5

私はZbarスキャナを統合する必要がある私のアンドロイドプロジェクトの1つで働いています。私はZbarスキャナをプロジェクトに統合しました。私が直面している問題は、サムスンのタブ3ではスキャナ領域に黒い画面が表示されることがあります。他のデバイスでも完全に動作しています。私はネクサスでチェックして、デバイスのようなキャンバスとそれは完璧なスキャン画面を示しています。私のコードに問題はありますか?ここに私のコードです。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(); 
      } 
     } 
    }; 

問題を解決するために私を助けてください。

+0

この問題もありますか?マイノート5では、カメラは黒です。 – Zapnologica

答えて

0

releaseカメラを一時停止中に破棄します。それはカメラがどんなリソースによっても解放されず、あなたが再びそれを開始したときに起こります。これはあなたを助けるでしょう。

+0

返事ありがとう、私はonPauseでカメラをリリースすることについてコーディングを行っています。 –

+0

問題解決済み?? – Satyavrat

+0

いいえ、問題は解決しません。 –

関連する問題