2015-01-26 2 views
1

Google은 지원되는 모든 Android 휴대 전화 ("Samsung Galaxy S5"제외)과 호환되는 앱을 보유하고 있습니다. 우리의 애플 리케이션 카메라 가까운 거리에서 사진을 찍을 수 있습니다. 우리는 사진 촬영에 집중할 때마다 토치 모드가 필요합니다. 지원되는 매개 변수를 확인하고 지원되는 경우 값을 설정합니다.Samsung Galaxy S5 카메라 토치 작동하지 않음

params가 설정되었지만 이벤트가 실행되지 않거나 카메라가 설정을 무시합니다. OpenCamera를 사용하여 테스트 한 결과, 응용 프로그램은 횃불을 켤 수 있지만 아직 내 매개 변수를 설정하는 방법과 자신의 매개 변수를 설정하는 방법의 차이를 찾을 수 없습니다. 어쩌면 당신을 도울 것입니다 ..

//Set all camera parameters(flash, focus, white balance, etc) 
private void setCameraParameters() 
{ 
    //Rotate the orientation of the preview to match orientation of device 
    camera.setDisplayOrientation(getCameraRotation()); 

    //A Parameters object must be used to set the other parameters. 
    Parameters params = camera.getParameters(); 

     //Flash Mode to Torch if supported 
     if(params.getSupportedFlashModes().contains("torch")) 
     { 
      // Torch mode 
      params.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     } 

     //Focus Mode to Macro if supported, Auto if not 
     if(params.getSupportedFocusModes().contains("macro")) 
     { 
      //Macro focus mode 
      params.setFocusMode(Parameters.FOCUS_MODE_MACRO); 
     } 
     else 
     { 
      //Auto focus mode 
      params.setFocusMode(Parameters.FOCUS_MODE_AUTO); 
     } 


     //White Balance mode to Auto if available. 
     List<String> supported_white = params.getSupportedWhiteBalance(); 
     if(supported_white!=null) 
     { 
      if(supported_white.contains("auto")) 
      { 
       params.setWhiteBalance(Parameters.WHITE_BALANCE_AUTO); 
      } 
     } 

     // Auto Exposure Lock to false if available 
     if(params.isAutoExposureLockSupported()) 
     { 
      params.setAutoExposureLock(false); 
     } 

     // Auto White Balance Lock if available. 
     if(params.getAutoWhiteBalanceLock()) 
     { 
      params.setAutoWhiteBalanceLock(false); 
     } 

     //JPEG quality set to 100(highest) 
     { 
      params.setJpegQuality(100); 
     } 

     //Set focus area and metering area 
     List<Camera.Area> focusArea = calculateFocusArea(); 
     params.setFocusAreas(focusArea); 
     params.setMeteringAreas(focusArea); 
     Camera.Size size = pickCameraSize(params.getSupportedPictureSizes()); 
     params.setPictureSize(size.width, size.height); 

    //Set new parameters for camera 
    camera.setParameters(params); 

    boolean torch = getTorchState(camera); 
} 

// Added this method from zxing github to see if the value is being set 
boolean getTorchState(Camera camera) { 
    if (camera != null) { 
     Camera.Parameters parameters = camera.getParameters(); 
     if (parameters != null) { 
      String flashMode = camera.getParameters().getFlashMode(); 
      return flashMode != null 
        && (Camera.Parameters.FLASH_MODE_ON.equals(flashMode) || Camera.Parameters.FLASH_MODE_TORCH 
          .equals(flashMode)); 
     } 
    } 
    return false; 
} 
+0

라이트 developer site 방법 토치 상태를 확인한다. 비록 그것이 켜지지 않을지라도 그것은 설정됩니다. 네이티브 카메라 앱에서 토치가 설정되면 켜집니다. 이제 Google 코드를 살펴 보겠습니다. 누군가가 도움이되는 정보를 얻길 바란다. :-) – Patricia

답변

1

나는 그것이 약간 다른 일을 해요 :

는 여기에 우리의 코드입니다! 비교

   params = getCamera().getParameters(); 
    ... 

       //Check if device supports torch mode, If YES then enable 
       List<String> supportedFlashModes = params.getSupportedFlashModes(); 
       if (supportedFlashModes != null && supportedFlashModes.contains(Parameters.FLASH_MODE_TORCH)){ 
        params.setFlashMode(Parameters.FLASH_MODE_TORCH); 
        torchModeOn = true; 
       } 
... 

       getCamera().setParameters(params); 

나는 Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE을 사용하고 setFocusAreas, setMeteringArea, setAutoWhiteBalanceLock, setWhiteBalance 또는 setAutoExposureLock을 사용하지 않는.

코드를 본 후 각 사진을 개별적으로 통합하여 사진에 더 좋은 영향을 미치는지 확인할 수있었습니다. (내 애플뿐만 아니라 근접 촬영 사진을 필요로

Parameters.FOCUS_MODE_MACRO이 장치 중 하나에서 전혀 나를 위해 잘 작동하지 않는 내가

편집 .. 그것을 시도 :. 여기

가있다 그것이 도움 넣다 난 내 카메라를 설정하고 순서 ...

 setCameraDisplayRotation(); 

     params = getCamera().getParameters(); 

     setFocusMode(); 

     //Check if device supports torch mode, If you YES then set on 
     List<String> supportedFlashModes = params.getSupportedFlashModes(); 
     if (supportedFlashModes != null && supportedFlashModes.contains(Parameters.FLASH_MODE_TORCH)){ 
      params.setFlashMode(Parameters.FLASH_MODE_TORCH); 
      torchModeOn = true; 
     } 

     setImageResolution(); 

     getCamera().setParameters(params); // update params before preview.setCamera 
     preview.setCamera(getCamera()); 

     //... some custom code for determining the current screens available space for the preview 

     params.setPreviewSize(size.width, size.height); 

     if(setHiddenParameter(params, "zsl-values", "zsl", "on")){ 
      setUsingZsl(true); 
     }; 

     getCamera().setParameters(params); //update params after preview init 
+0

허! 매크로 모드를 사용할 수 있습니다. 카메라 매개 변수는 플래시 모드가 토치이지만 카메라가 응답하지 않음을 나타냅니다. 미리보기가로드 된 후 플래시 모드를 토치로 변경하고 있습니까? 주문을 변경하려고 시도했지만 작동하지 않았습니다. 타이밍 문제가 있는지 궁금하네요. – Patricia

+0

내가 도움을 줄 수 있도록 카메라 구성 순서를 포함하도록 응답을 편집했습니다. 매크로 모드에서 탭 또는 takePicture를 사용하여 초점을 맞출 수는 없지만 ZSL 계시 후에 다시 시도하지는 않았습니다. – BBaker