2012-08-27 1 views
2

'카메라'뒷면을 사용하여 항목 이미지를 캡처하는 응용 프로그램이 있습니다. 지금까지 테스트 한 모든 장치는 삼성 Galaxy SIII (S3)가 될 때까지 정상적으로 이미지를 캡처하는 기간에 올바르게 작동합니다.삼성 갤럭시 SIII와 관련된 문제 - Camera.onPictureTaken() 올바른 캡처 이미지 대신 인터레이스 이미지 반환

Samsung Galaxy SIII에서만 Camera.onPictureTaken()이 원시 이미지를 반환하는 것이 올바른 캡처 이미지 대신 비월 주사로 나타나는 것을 관찰하고 있습니다. 각 카메라 매개 변수 설정을 디버깅하고 다음 매개 변수 설정자가 문제를 일으키는 지 확인하십시오. 우리가 할 경우 명시 적으로 매개 변수에 setPictureSize는(), 예상대로 작동하지 :

parameters.setPictureSize(targetPictureSize); 

[H, W] = [3264, 2448]

기본적 parameters.getPictureSize() 반환하여 'targetPictureSize'는 아래에서 가장 근접한 사이즈 복귀 결정 기지이며,이 경우는 [w, H]를 사용한 = 1,600, 1,200]를 'targetPictureSize'

camera.getParameters().getSupportedPictureSizes(); 

사람과 같은 크기는 알고 이유와 해결 방법?

+0

Android 버전이 영향을 줍니까? 그것은 4.1.4가 아니라 4.0.4에 영향을 미칠 것 같습니까? – dazhi

답변

6

일이 setPictureSize()를 호출하지), 미리보기가 활성화되어 있습니다. 해결 방법은 미리보기를 시작하거나 미리보기를 중지하고 매개 변수를 설정 한 다음 미리보기를 다시 시작하기 전에 그림 크기를 이더넷으로 설정하는 것입니다.

parameters.setPictureSize(1600, 1200); 
... 
camera.stopPreview(); 
camera.setParameters(parameters); 
camera.startPreview(); 

기술 참고 :

인터 레이싱의 원인은 이미지가 기본 해상도 (3264 × 2448)에서 캡처 카메라에서 반환 된 것으로 나타나지만 setPictureSize 지정된 해상도로 표시됩니다. 결과적으로, 그러한 이미지가 디스플레이 될 때, 캡쳐 된 이미지로부터의 모든 픽셀 행은 픽셀의 (기본 해상도/지정된 해상도) 행으로서 디스플레이된다. 사진 크기가 1600x1200 인 경우 이미지가 인터레이스 된 것처럼 보이지만 다른 해상도 (예 : 640x480)에서는 이미지가 완전히 손상된 것처럼 보입니다.

+0

이 시점에서 답을 확인할 수는 없지만 귀하의 추론은 건전 해 보입니다. 답으로 받아 들일 것입니다. 감사. –

+0

안녕하세요 게리 S, 대답을 확인할 수 있었습니까? – dazhi

0

좋은 대답이나 이유가 없다고 생각합니다. Camera.getParameters(). setPictureSize()를 제대로 구현하지 못해서 삼성을 잘못 판단 할 수 있습니다. 다음은

는 S3 모델 이름을 확인하여 내 해결하고 이전에 구성된 것보다 다른 pictureSize (또는 기본값 camera.setParameters를 호출 할 때이 문제가 나타납니다

 // Source - http://en.wikipedia.org/wiki/Samsung_Galaxy_S_III 
     String s3ModelNames[] = { "XXXXXXXXXXXXXXXX", // Place holder 
       "SAMSUNG-SGH-I747", // AT&T 
       "SAMSUNG-SGH-T999", // T-Mobile 
       "SAMSUNG-SGH-N064", // Japan 
       "SAMSUNG-SCH-R530", // US Cellular 
       "SAMSUNG-SCH-I535", // Verizon 
       "SAMSUNG-SPH-L710", // Sprint 
       "SAMSUNG-GT-I9300", // International 
       "SGH-I747", // AT&T 
       "SGH-T999", // T-Mobile 
       "SGH-N064", // Japan 
       "SCH-R530", // US Cellular 
       "SCH-I535", // Verizon 
       "SPH-L710", // Sprint 
       "GT-I9300" // International 
     }; 

     List<String> s3ModelList = Arrays.asList(s3ModelNames); 

     if (s3ModelList.contains(deviceModel)) { 
      // DEVICE SPECIFIC WORK AROUND for Samsung Galaxy S3 
      // SKIP calling parameters.setPictureSize() Samsung Galaxy SIII phone (Confirmed on AT&T, Verizon, Sprint) due the Camera image are interlaced when setPictureSize() are set to other than default. 
     }