2013-05-31 13 views
9

Mam aplikację na Androida z kamerą skonfigurowaną do wysyłania podglądu do TextureView. W onSurfaceTextureUpdated sposobie mojego SurfaceTextureListener ja wyciągnąć ramkę podglądu postaci bitmapy używając:Android TextureView.getBitmap() jest bardzo wolny

textureView.getBitmap(existingBitmap); 

To działa dobrze, ale trwa bardzo długo (około 200-250 ms dla 720x1280 obrazu). Wygląda na to, że powinno to iść znacznie szybciej. Jakieś przemyślenia na temat tego, w jaki sposób mogę poprawić wydajność tej operacji?

+0

Czy znalazłeś rozwiązanie tego problemu? Jestem dokładnie w takiej sytuacji jak ty. –

+0

Jeszcze nie. Prawdopodobnie musisz skonfigurować kontekst opengl i przeczytać go z tekstury, ale jeszcze tego nie zbadałem. Daj mi znać, jeśli coś wymyślisz. – ajselvig

+0

@ajselvig Czy byłeś w stanie odczytać go z tekstury OpenGL. nie mogłem znaleźć sposobu, aby to zrobić. –

Odpowiedz

-1

Użycie tego polecenia w celu uzyskania podglądu generuje nową mapę bitową z podglądu, to właśnie zajmuje tak dużo czasu. Moja sugestia byłoby wykonać tę operację w wątku tła wyjaśnione w ten link:

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

Będzie również pozwalają na stos operacje, które wymagają tę operację należy najpierw wypełnić w funkcji onPostExecute.

Pozwoli to na działanie głównego wątku UI i będzie reagować na wszystko, co użytkownik może potrzebować w tym czasie.

To może nie być idealna odpowiedź, na którą się znalazłeś, ale mam nadzieję, że pomoże.

+0

proszę dodać przykład. Dzięki –

Powiązane problemy