맞춤형 카메라 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);
가 미리 원활시에 계속 대신 전술 한 바와 같이 화면 방향 변경 처리