SORU
1 EKİM 2010, Cuma


Android - Kamera önizleme yana.

Bir Önizleme kamera ekranında bakın ne görüntülemek için kullanıyorum.

Her şey iyi çalışıyor alabilirim, yüzey oluşturulmuş, yüzey ayarlama ve yüzey görüntülenir.

Ancak bu her zaman yanlış bir 90 derecelik bir resim portre modunda açı görüntüler.

Resimde: gibi

alt text

Aşağıdaki kodu kullanarak resim düz koyacaktır farkındayım:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Ancak, diğer öğeleri olan bir Etkinlik içinde Önizleme var ve benim Etkinlik manzara modunda görüntülenecek bir anlam ifade etmez. (Varsayılan olarak devre dışı)

Zaten oraya sadece Önizleme yönünü değiştirmek için, bu yüzden merak ediyorum? Ve benim Etkinlik sonuna doğru Portre modunda görüntülenen bırakmak mı?

Ya zaten doğru görüntülenir böylece önizleme döndürmek için?

CEVAP
24 ŞUBAT 2011, PERŞEMBE


Bu sorun, belirli donanım see here bir hata olarak başlatmak için ortaya çıktı ama mCamera çağrısı kullanılarak aşılabilir.setDisplayOrientation(derece) API 8'de kullanılabilir. Bu nasıl ben bunu uygulamak:

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();                      
    }

Ve previewCamera yöntemi :

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 ve sahip olduğum için başlangıçta koymak günlük tablolarda her dönüşü çekler ne dönüş oldu ve sonra da debug cihazı ve izlenen logCat çıkışı sırasında çevirdim cihaz. Beklediğiniz gibi, 0 oldu telefon (dikey), 90 derece telefonu SAAT yönünün tersine 90 derece dönüş oldu (saat yönünde olurdu düşünmüştüm). Kodu Telefon 90 veya 180 derece olduğu zaman herhangi bir görüntü rotasyon yapmaya ihtiyacım olmadığını görürsünüz - cihaz bunu kendisi idare etti gibi. Tek bir noktadan düzgün çalışmıyor: 270 derece dönüş olduğunda size dönüş aygıtı saat yönünde 90 derece ve ekran döndürme sayaçları tamam ama eğer döndürme cihazı 270 derece saat yönünün tersine, değil mi görünmesini telafi düzgün.

P. S. genişliği swapover ve uygun devirde yükseklik Unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 0TACTICAL0HIPPY0

    0TACTICAL0HI

    30 EYLÜL 2012
  • Photoshop Pro Help

    Photoshop Pr

    1 Ocak 2007
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009