문제

우리의 응용 프로그램은 카메라 미리보기를 표시하며 카메라 매개 변수를 설정할 때 런타임 예외를 얻는 모토로라 드로이드를 제외한 모든 전화기에서 잘 작동하는 것 같습니다.

    java.lang.RuntimeException: setParameters failed
   at android.hardware.Camera.native_setParameters(Native Method)
   at android.hardware.Camera.setParameters(Camera.java:611)
   at com.highwaynorth.andrometer.CameraPreviewSurfaceView.surfaceChanged(CameraPreviewSurfaceView.java:57)
   at android.view.SurfaceView.updateWindow(SurfaceView.java:460)
   at android.view.SurfaceView.dispatchDraw(SurfaceView.java:287)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1525)

다음은 주로 가져온 SurfaceChanged ()에 대한 코드입니다. 아피데모

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
   // Now that the size is known, set up the camera parameters and begin
   // the preview.
   Camera.Parameters parameters = mCamera.getParameters();
   parameters.setPreviewSize(w, h);
   parameters.setPictureFormat(PixelFormat.JPEG);
   parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
   parameters.setPreviewFrameRate(1);
   mCamera.setParameters(parameters);
   mCamera.startPreview();

}

모토로라 드로이드에서 예외를 일으킬 매개 변수를 어떻게 설정하고 있는지에 대해 무엇이 잘못되었는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

귀하의 문제가 다음 두 줄 중 하나라고 말할 수 있습니다.

parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
parameters.setPreviewFrameRate(1);

나는 그 코드의 나머지 부분이 내 책의 일부 카메라 샘플에서하는 일이며 드로이드에서 테스트를 받았기 때문에 이것을 알고 있습니다.

사용하고 싶을 수도 있습니다 getSupportedPreviewFormats() 그리고 getSupportedPreviewFrameRates() 카메라에있는 카메라 미터 객체에서 문제의 장치가 원하는 형식과 프레임 속도를 지원하는지 확인하십시오. 이러한 방법은 Android 2.0에 새로운 것이므로 드로이드/이정표 (아마도 Nexus One)에서 작동하지만이 글을 쓰는 시점에는 아무것도 없습니다. 이전 Android API 버전을 타겟팅하는 경우 반사 또는 일부 클래스로드 트릭을 사용하여 이러한 방법으로 Android 2.0에서 작동하고 이전 버전에서 건너 뛸 수 있습니다.

다른 팁

가능한 한 많은 장치에서 실행할 수 있도록 사용할 수있는 미리보기 형식을 확인해야합니다.

드로이드가 pixelformat.ycbcr_422_i pixelformat.ycbcr_420_sp를 지원하는 것처럼 보입니다

다음 방법을 사용하여 사용 가능한 형식 목록을 얻을 수 있습니다.getSupportedPreviewFormats ()

픽셀 형식

조사하고 싶은 또 다른 것 :

MotoBlur를 실행하는 장치에 대해이 문제를 겪고 있으며 2.3 (특히 Droid2, Droidx 및 Atrix with Verizon)으로 업데이트되었습니다.

카메라 매개 변수는 괜찮 았지만 레이아웃/capture.xml에서는 ViewFindErview의 배경이 투명하게 설정됩니다.

<com.google.zxing.client.android.ViewfinderView
   android:id="@+id/viewfinder_view" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:background="@color/transparent"
/>

글쎄, 그것은 Android 2.3의 Motoblur의 투명성이 그렇게 투명하지 않습니다 ...

풀이

android:background="@color/transparent"

뷰 파인더에서 내 문제를 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top