2013-05-31 17 views
9

Ich habe eine Android-App mit der Kamera konfiguriert, um seine Vorschau an eine TextureView zu senden. Im onSurfaceTextureUpdated Methode meiner SurfaceTextureListener ziehe ich den Vorschaurahmen als Bitmap aus mit:Android TextureView.getBitmap() ist sehr langsam

textureView.getBitmap(existingBitmap); 

Es funktioniert gut, aber dauert sehr lange Zeit (etwa 200-250 ms für ein 720x1280 Bild). Es scheint, dass dies viel schneller gehen sollte. Irgendwelche Gedanken darüber, wie ich die Leistung dieser Operation verbessern kann?

+0

Haben Sie eine Lösung gefunden? Ich bin in der richtigen Situation wie du. –

+0

Noch nicht. Sie müssen wahrscheinlich einen OpenGL-Kontext einrichten und ihn aus einer Textur lesen, aber ich habe das noch nicht untersucht. Lass es mich wissen, wenn du etwas herausfinden kannst. – ajselvig

+0

@ajselvig Konnte man es von der OpenGL-Textur lesen. Ich konnte keinen Weg finden, dies zu tun. –

Antwort

-1

Wenn Sie diesen Befehl verwenden, um die Vorschau zu erhalten, wird eine neue Bitmap aus der Vorschau generiert, was die Anwendung so lange dauert. Mein Vorschlag wäre, diese Operation in einem Hintergrund-Thread in diesem Link erklärt auszuführen:

http://developer.android.com/reference/android/os/AsyncTask.html

Es erlaubt Ihnen auch Operationen zu stapeln, die diese Operation erfordert zunächst in der OnPostExecute Funktion abgeschlossen werden.

Dadurch kann der Haupt-UI-Thread funktionieren und auf alles reagieren, was der Benutzer möglicherweise in dieser Zeit tun muss.

Dies ist vielleicht nicht die perfekte Antwort, die Sie suchen, aber hoffe, es hilft.

+0

bitte können Sie ein Beispiel hinzufügen. Danke –