2012-04-30 12 views
9

Laut Android Developer Site:Android Kamera Vorschau Rotation

nach Android 2.2 gibt es die Funktion

"setDisplayOrientation"

die Kameravorschau Drehung einzustellen.

Und auch nach der Android Developer Site finden wir folgenden Quellcode.

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 ; 
    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 ; 

    } 

aber ich kann nicht mit irgendeiner Art von Geräten. Wie Samsung Galaxy Y S5360, S5660, YP-G1, YP-G70, etc

nur ein Teil der Maschine nicht funktioniert, Galaxy Nexus, SII, oder ein High-End-Gerät, es funktioniert.

Wird SetDisplayOrientation nicht unterstützt, oder die Geräte-Firmware ist nicht bereit?

PS. Alle Geräte sind Android 2.3.1 oder höher.

Hilfe.

+0

Ich habe das gleiche Problem auf meinem Galaxy Y. Haben Sie etwas herausgefunden? Ich würde gerne wissen, ob setDisplayOrientation erfolgreich war, um es in die Landschaft zu sperren, wenn nicht. –

+0

endlich, nicht gelöst. Machen Sie die Aktivität der Kameraoberfläche nur zur horizontalen Ansicht. –

+0

Hat jemand eine Liste von Geräten, auf denen dieser Fehler auftritt? Jede Hilfe wäre willkommen. – patrickfdsouza

Antwort

-3

Versuchen Sie, die Ausrichtung der XML-Datei Ihrer Kameraansicht auf Querformat einzustellen.

+1

Keine wirklich hilfreiche Antwort, wenn das OP Landschaft würde, würde er nicht fragen, wie man überhaupt ein Porträt bekommt. – Shirkrin

+0

@Shirkrin die Antwort auf den ersten Platz seltsam aussieht. Tatsache ist aber, dass bei manchen Geräten die Vorschau der Kamera auf Landschaft fixiert ist. Wenn Sie das Xml Ihrer Kameravorschau auf Querformat einstellen, passt es auf alle Geräte. Was Sie als nächstes tun werden, ist die Verwendung der Matrix, um das von der Kamera aufgenommene Bild zu drehen. – dumbfingers

+0

Dies hat keine Arbeit. –

3

Das Problem der Einstellung der Orientierung Anzeige der Kamera funktioniert nicht auf Betriebssystem-Version dieser Geräte, die im Grunde ist die (Lebkuchen), aber für die Geräte darüber funktioniert es gut.

Ich versuchte dies auch auf diesen Geräten der Querformat-Modus funktioniert gut, aber Hochformat hat das Problem. Im Fall Porträt zu zwingen gezwungen gerade Ausrichtung der Kamera auf 90 Grad durch diese in

public void surfaceChanged(SurfaceHolder holder, int format, int width, 
    int height) { 

camera.setDisplayOrientation(90); 


} 

sowie hatte Post das Bild vor der Anzeige oder dem Speichern durch in

PictureCallback myPictureCallback_JPG = new PictureCallback(){ 


    public void onPictureTaken(byte[] arg0, Camera arg1) { 

    Bitmap bitmapPicture= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); 
     Matrix matrix = new Matrix(); 
    matrix.postRotate(90); 
    int height=bitmapPicture.getHeight(); 
    int width=bitmapPicture.getWidth(); 
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmapPicture,height,width, true); 
     Bitmap rotatedBitmap = Bitmap.createBitmap(scaledBitmap , 0, 0, scaledBitmap.getWidth(), scaledBitmap.getHeight(), matrix, true); 
} 

HOPE DIES drehen HILFT

Verwandte Themen