2014-01-24 2 views
1

맞춤형 카메라 Android 앱에서 작업 중입니다. 미리보기 화면이 세로 및 가로 모드에서 화면 크기와 잘 어울립니다. 그러나 전화 방향을 변경할 때 미리보기 다시 그리기에 눈에 띄는 지연이 있습니다. 포럼을 통해 검색하면 다른 사람들이 전화 방향 변경을 처리 할 때 유사한 문제를 겪게됩니다. 활동을 방지하기 위해 몇 가지 제안을 따라 파괴하고 다시, 카메라는 이러한 변화 중에 발매 열릴되고, 나는의 AndroidManifest.xml에 다음 줄을 추가 한 : 디버깅 및 테스트에서오리엔테이션 변경시 카메라 미리보기를 다시 그리는 데 약간의 시간이 걸립니다.

 android:configChanges="orientation|screenSize"> 

을 나는 확인할 수 있습니다 오리엔테이션 변경시 더 이상 활동이 파괴/생성되지 않습니다. 그러나이 추가 기능을 사용하더라도 미리보기가 세로에서 가로 방향으로 다시 그려지는 경우 눈에 띄는 지연이 있습니다.

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mPreview.setCameraDisplayOrientation(this, 1, mCamera); 
} 

그리고 서피스 뷰 SurfaceView 클래스 내 :

public void setCameraDisplayOrientation(Activity activity, 
     int cameraId, android.hardware.Camera camera) { 

    android.hardware.Camera.CameraInfo info = 
      new android.hardware.Camera.CameraInfo(); 
    android.hardware.Camera.getCameraInfo(cameraId, info); 
    int rotation = activity.getWindowManager().getDefaultDisplay() 
      .getRotation(); 
    int degrees = 0; 
    switch (rotation) { 
     case Surface.ROTATION_0: degrees = 0; break; 
     case Surface.ROTATION_90: degrees = 90; break; 
     case Surface.ROTATION_180: degrees = 180; break; 
     case Surface.ROTATION_270: degrees = 270; break; 
    } 

    int result = (info.orientation + degrees) % 360; 
    result = (360 - result) % 360; // compensate the mirror 
    camera.setDisplayOrientation(result); 
} 

그리고 surfaceChanged 내

, 내가 가진 : 새로운 아무것도

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
    initialisePreview(w, h); // gets best preview size and sets camera parameters 
    mCamera.startPreview(); 
    } 

없습니다 여기에 활동 클래스 내에서 onConfigurationChanged 메서드에 대한 코드입니다 약 setCameraDisplayOrientation 메소드에 관한 것으로 안드로이드 개발자 웹 사이트에서 수정되었습니다. 다시 그릴 때 지연과 같은 일에 기여할 수있는 것이 무엇인지 확신 할 수 없습니다. 누구든지 생각이 있다면 조언하십시오. 고맙습니다.

이 변화

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

가 미리 원활시에 계속 대신 전술 한 바와 같이 화면 방향 변경 처리

답변

1

, 전 사용 onCreate() 중에 방향 변경 방위 센서에 의해 측정을 무시 활동하기에 의존 전화 방향이 바뀝니다. 이 sppears 직관적 인 카운터,하지만 내 문제를 해결했습니다. 누군가가 도움이되기를 바랍니다.