2013-05-24 2 views
3

enter image description here Я разрабатываю приложение для Android. Я создал собственный класс камеры для захвата изображений. Он отлично работает во многих устройствах, но когда я пробовал его с помощью Samsung Galaxy S4, он возвращает изображение с серыми линзами, как показано. Мой код:Samsung 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] 

ответ

Смежные вопросы