2013-05-24 2 views
3

enter image description here Android 애플리케이션을 개발 중입니다. 이미지를 캡처하기 위해 맞춤 카메라 클래스를 만들었습니다. 그것은 많은 장치에서 잘 작동하지만 삼성 갤럭시 S4와 함께 시도했을 때 그림과 같이 회색 선이있는 이미지를 반환합니다. 내 코드 :삼성 Galaxy S4 이미지 캡처

![`*public void surfaceCreated(SurfaceHolder holder) { 
    frontCam = SharedUserPrefs.getSharedPrefData(AutoCapture.this, 
      Constants.IS_FRONT_CAMERA); 

    if (frontCam.equals(Constants.VALUE_ON)) { 

     for (int camIdx = 0; camIdx < Camera.getNumberOfCameras(); camIdx++) { 
      Camera.getCameraInfo(camIdx, cameraInfo); 
      if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
       try { 
        mCamera = Camera.open(camIdx); 
       } catch (RuntimeException e) { 
        Log.e(TAG, 
          "Camera failed to open: " 
            + e.getLocalizedMessage()); 
       } 
      } 
     } 

    } else { 
     mCamera = Camera.open(); 
    } 
    mCamera.setDisplayOrientation(90); 
    Camera.Parameters p = mCamera.getParameters(); 
    if (getPackageManager().hasSystemFeature(
      PackageManager.FEATURE_CAMERA_FLASH)) { 
     if (flashOn.equals(Constants.VALUE_ON)) { 
      { 
       p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
      } 
     } 
    } else { 
     p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
    } 
    p.setPictureFormat(ImageFormat.JPEG); 

    List<Camera.Size> previewSizes = p.getSupportedPreviewSizes(); 
    Camera.Size previewsize = previewSizes.get(0); 
    for (Camera.Size size : previewSizes) { 
     Log.d("Width---" + size.width, "Height---" + size.height); 
    } 

    p.setPreviewSize(previewsize.width, previewsize.height); 

    mCamera.setParameters(p); 

} 

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
    Log.e(TAG, "surfaceChanged"); 

    if (mPreviewRunning) { 
     mCamera.stopPreview(); 
    } 

    try { 
     mCamera.setPreviewDisplay(holder); 

    } catch (IOException e) { 

     System.out.println("Caught exception in surface chagned"); 
     e.printStackTrace(); 
    } 
    mCamera.startPreview(); 
    mPreviewRunning = true; 

} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    Log.e(TAG, "surfaceDestroyed"); 

    if (mPreviewRunning == false) { 
     if (mCamera != null) { 
      mPreviewRunning = false; 
      mCamera.stopPreview(); 
      mCamera.release(); 
     } 
     if (mCamera != null) { 
      mPreviewRunning = false; 
      mCamera.release(); 
     } 
    }/* 
    * else if (mCamera != null) { mPreviewRunning = false; 
    * mCamera.stopPreview(); mCamera.release(); } 
    */ 

}*`][2] 

답변

관련 문제