2012-05-18 25 views
13

Kamerayı sadece önizlemeyi göstermek için kullanıyorum (fotoğraf çekmek veya video kaydetmek için).Android: Portre modunda kamera önizleme yönü

Uygulama her zaman dikey moddadır (manzara modu devre dışıdır). kamera önizleme daima 90 derece CCW döndürülür ve ben (ne setDisplayOrientation ile ne de p.set("orientation", "portrait") ve p.set("rotation", 90)) ile değiştiremezsiniz.

önizleme HER ZAMAN böyle döndürülmüş mı yoksa bağımlı cihazdır? Hep böyle olsaydı Bu portre modunda, görüntüyü daha sonra döndürebilirim

Ya da kameranın doğru bir şekilde ayarlanması için bir yol var mı? Bu konuda çok fazla iş parçacığı okudum ama benim için hiçbir yanıt çalışmadım (Galaxy s2, Android) v2.3)

+0

FYI Samsung YP-G70 (Galaxy player 5.0) daima yatay modda. – cliff2310

+1

http://stackoverflow.com/questions/8475532/android-camera-in-view-with-buttons-and-text-over Umut bu Bu emülatörü çalışır ancak üzerinde .. –

cevap

31

Dikey yönlendirmeyi zorlamak için:

senin AndroidManifest.xml içinde android:screenOrientation="portrait" kurmak ve camera.startPreview();

Ben GS2 üzerinde test değil ama ben test ettik her telefonda çalışır çağırmadan önce camera.setDisplayOrientation(90); diyoruz.

Not: setDisplayOrientation Sadece Portre Modu için uygulamayı kodlanmış olan API Level 8

+0

size yardımcı olacaktır GS2’m Ama eğer doğru anlıyorsam, kamera DAİMA dikey modda 90 ° CW döndürülmelidir, doğru mu? Çünkü o zaman kendim döndüreceğim. Bu daha iyi bir şekilde olurdu çünkü 8'den düşük API seviyesinde çalışacaktı. – DominicM

+1

** Bu, Samsung Ace üzerinde çalışmıyor **, burada http://stackoverflow.com/questions/19176038/camera- setdisplayorientation-function-değil-samsung-galaxy-ace-wi için çalışmaz – swiftBoy

+0

Bu 90 derece her zaman döndürülebilir olması gerekmez. Buraya bakın: http://stackoverflow.com/questions/4697631/android-screen-orientation – Sonhja

5

yılında eklenmiştir.

camera.setDisplayOrientation(90); 

90 dereceye kadar döndürmek için Kamera yapacak ve bu tüm android cihazlar için Doğru Önizleme alabilmek için android bazı cihazlar için uygun değildir Oryantasyon neden olabilir Hakemli aşağıdaki kodu kullanabilirsiniz geliştiriciler sitesi. Eğer aktiviteye göndermek zorunda Aşağıda

, cameraId geri 0'dır = ve Ön kamera için bu kamera için setDisplayOrientation nasıl ayarlanacağını olan 1

public static 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; 
    //int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
     // do something for phones running an SDK before lollipop 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
      result = (info.orientation + degrees) % 360; 
      result = (360 - result) % 360; // compensate the mirror 
     } else { // back-facing 
      result = (info.orientation - degrees + 360) % 360; 
     } 

    camera.setDisplayOrientation(result); 
} 

olan irade mükemmel tüm android cihazlar için.

İlgili konular