Bu sorun belli donanımıyla ilgili bir hata olarak işe başlamak göründü burada göremiyor ama bu bunu uygulamaya nasıl Yani mCamera.setDisplayOrientation çağrısı API 8'de kullanılmaya (derece) kullanılarak aşılabilir:
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (isPreviewRunning) {
mCamera.stopPreview();
}
Parameters parameters = mCamera.getParameters();
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0) {
parameters.setPreviewSize(height, width);
mCamera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90) {
parameters.setPreviewSize(width, height);
}
if(display.getRotation() == Surface.ROTATION_180) {
parameters.setPreviewSize(height, width);
}
if(display.getRotation() == Surface.ROTATION_270) {
parameters.setPreviewSize(width, height);
mCamera.setDisplayOrientation(180);
}
mCamera.setParameters(parameters);
previewCamera();
}
And the previewCamera method :
public void previewCamera() {
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
isPreviewRunning = true;
} catch(Exception e) {
Log.d(APP_CLASS, "Cannot start preview", e);
}
}
Bu bir HTC Desire üzerindeydi ve rotasyonun ne olduğunu söylemek için başlangıçta her bir rotasyon kontrolüne günlük kaydı ifadeleri koymam ve ardından cihazda hata ayıklamam ve cihazı döndürürken logCat çıkışını izlemem gerekiyordu. HTC Desire için, 0 beklediğiniz gibi telefondu (portre), 90 derece telefonu 90 derece SAAT YÖNÜNÜN TERSİNE çeviriyordu (saat yönünde olacağını varsaymıştım). Kodda, telefon 90 veya 180 derecedeyken herhangi bir ekran rotasyonu yapmam gerekmediğini göreceksiniz - cihaz bunu kendisi hallediyor gibiydi. Yalnızca bir nokta düzgün çalışmıyor: Cihazı saat yönünde 90 derece döndürdüğünüzde 270 derece dönüş ve ekran dönüşü iyi durumda ancak cihazı saat yönünün tersine 270 derece döndürürseniz, bunu düzgün bir şekilde telafi ediyormuş gibi görünmüyor.
PS Genişlik ve yüksekliğin uygun dönüşlerde değiştirilmesine dikkat edin.