SurfaceView를 사용하여 카메라 캡처 응용 프로그램을 테스트 중입니다.getParameters 정보 (빈 매개 변수)
응용 프로그램의 개요
그것은 (카메라 뷰)에 실시간으로 얼굴을 감지 할 수있다.
영화를 저장할 수 있습니다.
나는 영화를 저장하기 위해 android.media.MediaRecord 클래스를 사용하고 있습니다.
myRecorder = new MediaRecorder();
myRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
myRecorder.setOutputFile(Environment.getExternalStorageDirectory() + "/Movies/sample.3gp");
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
myRecorder.setVideoFrameRate(30);
myRecorder.setVideoSize(320, 240);
myRecorder.prepare();
myRecorder.start();
가 avobe 단계 후에, RuntimeException을 아래 단계에서 발생한다.
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
//Log.d(TAG, "onPreviewFrame: ");
int width = camera.getParameters().getPreviewSize().width; <--
int height = camera.getParameters().getPreviewSize().height;
03-22 22:54:09.134 27875-27875/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: wbcompany.co.jp.facedetector3, PID: 27875
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:2019)
at wbcompany.co.jp.facedetector3.CameraView.onPreviewFrame(CameraView.java:150)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1192)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6189)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
(카메라 android.hardware.Camera 개체이다) 'myRecorder.start를()를 호출하기 전에,이 예외가 발생하지 않는다 .
이 오류의 해결책을 모릅니다. 제게이 문제의 해결책을주세요.
내 런타임 환경 : 안드로이드 7.0/API 레벨 24
필자는 필자가 안드로이드 API 22 에뮬레이터에서 Stock Camera 앱을 사용하고 있었다. 필자는 64 비트 x86 대신 에뮬레이터에서 32 비트 x86 OS 이미지를 사용하여 문제를 해결했습니다. –