2013-02-22 5 views
8

Wie Multi-Linsen oder Vorschau mit einer Kamera in Android

wollte schaffe ich so etwas wie oben zu schaffen, dass drei Box, wie eine Kameravorschau wird. Irgendeine Idee oder ein Konzept, was zu tun ist?

Ich habe versucht, Instanz der Kamera und legen Sie es auf drei camerapreview Objekte, aber ich bekomme eine Fehlermeldung, ich denke, es ist nicht erlaubt. hier ist mein Code:

private CameraPreview mPreview; 
    private CameraPreview mPreview2; 
    private CameraPreview mPreview3; 
    private FrameLayout preview; 
    private FrameLayout preview2; 
    private FrameLayout preview3; 

    mCamera=getCameraInstance(); 
    mCamera2=getCameraInstance(); 
    mCamera3=getCameraInstance(); 

    mPreview=new CameraPreview(getApplicationContext(), mCamera); 
    mPreview2=new CameraPreview(getApplicationContext(), mCamera2); 
    mPreview3=new CameraPreview(getApplicationContext(), mCamera3); 

    preview=(FrameLayout)findViewById(R.id.camSetA_qr1); 
    preview.addView(mPreview); 
    preview2=(FrameLayout)findViewById(R.id.camSetA_qr1); 
    preview2.addView(mPreview2); 
    preview3=(FrameLayout)findViewById(R.id.camSetA_qr1); 
    preview3.addView(mPreview3); 

und mein getInstance Code

public static Camera getCameraInstance() { 
    Camera c = null; 
    try { 
     c = Camera.open(); 
    } catch (Exception e) { 
    } 
    return c; 
} 
+2

Vielleicht können Sie Bild über Kamera Bildschirm platzieren, mit drei transparenten Quadraten? –

+0

yah, daran habe ich auch gedacht, aber gibt es da noch eine andere Möglichkeit? –

+1

Ich würde diese Option vorschlagen, weil es wertvolle Erinnerungen speichert. Vielleicht wäre es auch möglich, die Kamera-Ausgabe im Puffer zu speichern, und dann jedes Bild in jedem Ihrer quadratischen Bilder darstellen? Noch weiß ich keine anderen Möglichkeiten, da ich ein iPhone-Typ bin. –

Antwort

3

können Sie nur eine bestimmte Kamera (vorne oder hinten) einmal geöffnet; Sie können die Kamera nicht mehrmals öffnen, um mehrere Vorschau-Streams zu erstellen. Bei den meisten Geräten können Sie die vordere und hintere Kamera nicht gleichzeitig öffnen, da die Kameraprozessoren von beiden Kameras gemeinsam genutzt werden.

Dazu müssen Sie die Kamera nur einmal öffnen und dann die Ausgabevorschaudaten in die drei Teile aufteilen, die Sie dann anzeigen.

Wenn Sie auf Android-Versionen vor 3.0 (Honeycomb) ausführen müssen, müssen Sie die preview callbacks verwenden. Mit ihnen erhalten Sie ein byte [] -Array mit YUV-Daten für jeden Frame, die Sie dann zuschneiden, in RGB konvertieren und in einem ImageView oder SurfaceView platzieren können.

auf Android 3.0 oder höher können Sie die setPreviewTexture Methode Rohr die Vorschaudaten in eine OpenGL-Textur verwenden, die Sie dann auf mehr Quads in einem GLSurfaceView oder gleichwertig machen können.