카메라 응용 프로그램을 만들고 있습니다. 미리보기 그림은 90도 회전되었습니다. 그래서 코드를 변경하고 코드를 추가하여 카메라의 올바른 디스플레이 방향을 설정했습니다. 나는 응용 프로그램을 실행할 때 지금, 그것은 충돌 및 오류 메시지가java.lang.RuntimeException : setParameters가 실패했습니다. 카메라 매개 변수를 설정하는 중
java.lang.RuntimeException가 있습니다 : setParameters이
실패
내 surfaceChanged (INT의 시간, w INT SurfaceHolder에 홀더, INT 형식) 및 surfaceCreated (SurfaceHolder 홀더) 메소드는 다음과 같습니다.
public void surfaceChanged(SurfaceHolder holder,int format,int w,int h){
Camera.Parameters mparameters;
mholder = holder;
mparameters = mcamera.getParameters();
mparameters.setPreviewSize(mpreviewsizewidth,mpreviewsizeheight);
mparameters.setPictureSize(mpreviewsizewidth,mpreviewsizeheight);
String mCameraFlashMode = mparameters.getFlashMode();
if(mCameraFlashMode != null){
mparameters.setFlashMode(mparameters.FLASH_MODE_ON);
}
if(mparameters.getFocusMode() != null) {
mparameters.setFocusMode(mparameters.FOCUS_MODE_AUTO);
}
Display display = ((WindowManager)mcontext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0)
{
mparameters.setPreviewSize(mpreviewsizeheight, mpreviewsizewidth);
mcamera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90)
{
mparameters.setPreviewSize(mpreviewsizewidth, mpreviewsizeheight);
}
if(display.getRotation() == Surface.ROTATION_180)
{
mparameters.setPreviewSize(mpreviewsizeheight, mpreviewsizewidth);
}
if(display.getRotation() == Surface.ROTATION_270)
{
mparameters.setPreviewSize(mpreviewsizewidth, mpreviewsizeheight);
mcamera.setDisplayOrientation(180);
}
mcamera.setParameters(mparameters);
try {
mcamera.setPreviewDisplay(mholder);
}catch(IOException e){
e.printStackTrace();
}
mcamera.startPreview();
}
public void surfaceCreated(SurfaceHolder holder){
mcamera = Camera.open();
try{
mcamera.setPreviewDisplay(holder);
mcamera.setPreviewCallback(this);
}catch(IOException e){
mcamera.release();
mcamera = null;
}
}
내가 카메라 매개 변수를 설정하는 동안이 응용 프로그램이 충돌하지 않도록 내 코드를 수정할 수 있고, 미리보기가 올바른 방향으로 표시 할 수있는 방법을 도와주세요.