Frage

Ich habe versucht, einige Dinge zu versuchen, die Kamera-Vorschau zu bekommen auf einem SurfaceView im Portrait zu zeigen. Nichts hat geklappt. Ich teste auf einem Droid, die 2.0.1 hat. Ich habe versucht:

1) zwingt das Layout Porträt zu sein von: this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

2) mit

Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
parameters.setRotation(90);
camera.setParameters(parameters);

Gibt es etwas anderes kann ich versuchen? Wenn dies ein Fehler in Android oder das Telefon, wie kann ich sicherstellen, dass dies der Fall ist, so dass ich habe Beweise den Client zu informieren?

Danke, Prasanna

Keine korrekte Lösung

Andere Tipps

Wie die API lvl 8, das ist verfügbar:

public final Leere setDisplayOrientation (int Grad)

d. mit portait im Manifest:

public void surfaceCreated(SurfaceHolder holder) {
    mCamera = Camera.open();
    mCamera.setDisplayOrientation(90);

Ich habe eine Arbeitslösung für Portrait-Modus in 2.1 (getestet auf Wunsch) arbeitet vielleicht weniger.

Aktivitätsbildschirmausrichtung wird auf Hochformat eingestellt. (Android: screenOrientation = "Portrait")

die Kameraparameter:

Camera.Parameters p = mCamera.getParameters ();

 p.set("jpeg-quality", 100);
 p.set("orientation", "landscape");
 p.set("rotation", 90);
 p.setPictureFormat(PixelFormat.JPEG);
 p.setPreviewSize(h, w);// here w h are reversed
 mCamera.setParameters(p);

und das Bild Portrait sein wird.

SurfaceHolder Sie für die Kamera verwenden, müssen bei einer Größe mit Telefon Vorschaugröße kompatibel sein usualy Bildschirmauflösung.

Lustig auf Wunsch 2.2 funktioniert nicht ... Hier ist das Update:

   At surfaceCreated(..) or when you have this line
camera = Camera.open();
       add
camera.setDisplayOrientation(90);//only 2.2>

Camera.Parameters p = camera.getParameters();
    p.set("jpeg-quality", 100);
p.setRotation(90);
p.setPictureFormat(PixelFormat.JPEG);
p.setPreviewSize(h, w);
camera.setParameters(p);

Sie können versuchen, diese (gut für 2,2 oder darunter). Hier drehe ich das Bild, bevor es auf SD-Karte zu speichern. Aber es ist nur für Portrait-Modus. Wenn Sie es für beiden Modi machen mußten, dann sollten Sie die Kameraausrichtung überprüfen und einige Check setzen, bevor Bild aufnehmen.

PictureCallback jpegCallback = new PictureCallback() {
   public void onPictureTaken(byte[] data, Camera camera) {
      FileOutputStream outStream = null;
      try {
        imageFilePath = getFilename();
        InputStream is = new ByteArrayInputStream(data);
        Bitmap bmp = BitmapFactory.decodeStream(is);
        // Getting width & height of the given image.
        if (bmp != null){
           int w = bmp.getWidth();
           int h = bmp.getHeight();
           // Setting post rotate to 90
           Matrix mtx = new Matrix();
           mtx.postRotate(90);
           // Rotating Bitmap
           Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
           ByteArrayOutputStream stream = new ByteArrayOutputStream();
           rotatedBMP.compress(Bitmap.CompressFormat.PNG, 100, stream);
           byte[] byteArray = stream.toByteArray(); 
           outStream = new FileOutputStream
                              (String.format(imageFilePath,System.currentTimeMillis()));
           outStream.write(byteArray);
           outStream.close();
        } else {
           outStream = new FileOutputStream
                              (String.format(imageFilePath,System.currentTimeMillis()));
           outStream.write(data);
           outStream.close();           
        }       

        preview.camera.startPreview();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
    }
  }
};

Es gibt keine Möglichkeit, dies auf vielen aktuellen Geräten zu tun, einschließlich der G1 und Droid. Werfen Sie einen Blick auf die relevanten Fehlerbericht hier:

Siehe auch Kommentar von einem der Android-Ingenieure (Dave) hier:

Der Link Roman des Problems Thread gab hat eine praktikable Lösung, dass ich jetzt mit.

Finden Sie es hier: http://code.google.com/p/android/issues / detail? id = 1193 # c26

Es gibt keine Notwendigkeit, Sie für die Ausrichtung alle Parameter eingestellt haben, bis Sie, dass explizit müssen tun. Standardmäßig unterstützt es diese Möglichkeit. In meinem Fall habe ich eine Aktivität und vor dieser Tätigkeit habe ich eine Kamera-Ansicht, so dass ich keine Orientierung für die Kameraeigenschaften, anstatt für die Tätigkeit eingestellt habe ich die Orientierung als Porträt in der Manifest-Datei festgelegt. jetzt die App aussieht und funktioniert gut. Könnte für einige ein hilfreich sein ..

Danke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top