Kamera2 mit einer SurfaceView
Ich versuche, die neue Kamera 2 arbeiten mit einer einfachen SurfaceView und ich habe einige Probleme mit der live-Vorschau. Auf einigen Geräten wird das Bild gestreckt aus Verhältnissen beim Blick in Ordnung, auf andere.
Ich habe setup eine SurfaceView, dass ich über ein Programm anpassen, um die Größe der Vorschau-stream Größe.
Auf dem Nexus 5 sieht in Ordnung, aber eines Samsung-Geräte Ihren Weg. Auch die Samsung-Geräte haben einen schwarzen Rand auf der rechten Seite der Vorschau.
Ist es wirklich nicht möglich, die Arbeit mit dem SurfaceView oder ist dies die Zeit, um Schalter zu TextureView ?
Klingt wie die Vorschau nicht die Größe, die Sie denken, es ist. Finden Sie eine ähnliche Frage, mit Tipps für den Umgang mit
haben Sie einen Weg gefunden, verwenden Sie SurfaceView mit Kamera2 und ohne die verzerrte Vorschau?
Ich zog TextureView - das ist viel flexibler auch.
dumpsys
zu prüfen, das problem in diesem post: stackoverflow.com/questions/30714469/...haben Sie einen Weg gefunden, verwenden Sie SurfaceView mit Kamera2 und ohne die verzerrte Vorschau?
Ich zog TextureView - das ist viel flexibler auch.
InformationsquelleAutor slott | 2015-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist sicherlich möglich. Beachten Sie, dass die
SurfaceView
und seine damit verbundenenSurface
sind zwei verschiedene Dinge, und jeder kann/muss jeweils eine Größe.Den
Surface
ist die tatsächliche Speicher-Puffer, die halten wird die Ausgabe der Kamera, und damit seine Größe bestimmt die Größe des tatsächlichen Bildes erhalten Sie von jedem frame. Für jedes format der Kamera, es ist eine kleine Gruppe möglich (genaue Größen können Sie diesen Puffer.Den
SurfaceView
ist, was tut die Anzeige von diesem Bild, wenn es verfügbar ist, und kann im Prinzip beliebig groß sein in Ihrem layout. Es wird gestreckt, seine zugrunde liegenden zugeordneten Bild-Daten zu passen, was auch immer Ihr layout Größe ist, aber Hinweis: diese display-Größe unterscheidet sich von der Daten-Größe - Android wird die Größe der Bilddaten für die Anzeige automatisch. Dies ist, was wahrscheinlich verursacht die Dehnung.Zum Beispiel, können Sie eine
SurfaceView
-basierte autofit Ansicht ähnlich der camera2basic ist AutoFitTextureView wie folgt (dies ist, was ich benutze):Was ist das Seitenverhältnis der Bilder, die Sie einrichten der Oberfläche, auf der fehlerhafte Geräte? Ich bin nur zu raten, ohne zu sehen, die verzerrten Bilder, die Sie sprechen, aber ist der samsung zurück 16 x 9 Inhalt in ein 4x3-Bild-Puffer-mit vielen ungenutzten schwarz-bar-Bereich? Vielleicht sollten Sie versuchen, die Einstellung der Oberfläche für eine seiner 16x9 output-Größen und der SurfaceView die gleiche Art und Weise und sehen, was passiert?
Ich benutzte eine Auflösung von 1280 x 720 anzeigen-Größe sowie Kamera-Vorschau-Größe.
Wenn Sie speichern wie ein Bild statt mit einem ImageReader mit den gleichen Abmessungen, siehts richtig?
Ich muss gehen Sie zurück und versuchen es noch einmal - aber ich bin mir ziemlich sicher, Sie waren nur in Ordnung, wenn ich zog Sie aus dem Gerät und betrachtete Sie.
InformationsquelleAutor rcsumner
In den docs für createCaptureSession es sagt
Ich habe versucht, die @rcsumner post und es funktionierte nicht für mich. Ich verstehe nicht, warum es so schwer ist, zu vermeiden, Bild Strecken (aspect ratio distortion) bei der Arbeit mit der Kamera2-APIs und video. Die Oberfläche, auf der das Bild angezeigt wird immer zuerst angelegt. Warum kann das Bild nicht "einfach" skaliert werden, um die Oberfläche, die mit schwarzen Grenzen, wenn es sein muss, ohne Verzerrung? Dort hat zu sein ein straight forward Weg, dies zu tun.
InformationsquelleAutor paleozogt
Habe ich noch nie gearbeitet mit Kamera2 (aber sehr interessant, neue Technologie) und kann ich schlage vor, Sie Folgen die Proben. Und wenn Sie es sorgfältig prüfen, das Beispiel verwendet ein Benutzerdefiniertes
TextureView
sollten Sie probalby versuchen, Sie zu kopieren zu Ihrem Projekt:http://developer.android.com/samples/Camera2Basic/src/com.example.android.camera2basic/AutoFitTextureView.html
auch wenn man bedenkt, dass der Unterschied zwischen SurfaceView und TextureView (theoretisch) nur, dass Sie verwenden können, als eine normale Ansicht im layout und anderen "Schlägen" durch die view-Hierarchie, und dass Kamera2 ist nur in API21+... es sollte kein Schaden in der Migration zu
TextureView
gut. Angesichts TextureView API 14 und Kamera2 ist API-21, es gibt keinen Grund, wirklich. Wechseln Sie einfach zurück, Nein ?
Arbeiten auf einer cross-Plattform-lib - also mindestens 11 ist, so wäre es schön, damit es funktioniert... Aber wenn nicht min werden 14...
So etwas wie dieses, github.com/commonsguy/cwac-camera, aber auch Kamera2. Klingt cool. Aber meine Aussage immer noch wahr. Sie können separate
layout/camera
undlayout-v21/camera
richtigen Griff neue und alte Versionen.Ja, es ist im Grunde ein Ersatz für das mit ein paar mehr Dinge wie "Vorschau" - Ansicht eingebettet
InformationsquelleAutor Budius