2012-03-17 12 views
8

Próbuję uzyskać dostęp do nieprzetworzonego kanału przedniej kamery Androida. Domyślnie podgląd przedniej kamery jest odwrócony w poziomie, dzięki czemu użytkownicy widzą siebie, jakby patrzyli w lustro - to świetnie, ale nie to, czego potrzebuję. Jaki jest najlepszy sposób na pobranie surowca? Czy jest jakiś sposób wyłączenia automatycznego przerzucania, czy też powinienem sam spróbować go zamienić w kod? Moja aplikacja musi wyświetlać kanał przedni w czasie rzeczywistym bez odwracania go jak lustro.Zapobieganie odbijaniu skierowanej do przodu kamery

Odpowiedz

1

Dane z przedniego aparatu są takie, jakie widzi kamera, patrząc na ciebie. Lewa strona obrazu to Twoja prawa strona. Myślę, że właśnie tego chcesz? Po umieszczeniu na SurfaceView jest odwracany, więc działa tak, jak mówisz, ale jest to osobna transformacja kosmetyczna.

Przynajmniej tak wyglądało każde urządzenie, które widziałem i ciężko na to wpasowałem, aby zaimplementować obsługę kamer przednich w Barcode Scanner/Barcode Scanner+.

+0

to ma sens. W rzeczywistości próbuję renderować go za pomocą SurfaceView - jak powinienem się tym zająć? – daedalus28

+0

Ah. Więc nie wiem. Myślę, że będziesz musiał odebrać dane obrazu i ręcznie zamalować je na widok "Widok". A może trzeba odwrócić go ręcznie, ponieważ będzie po prostu odwrócić go. Nigdy nie dotknąłem tego aspektu, po prostu pozwól mu rzucać cokolwiek zechce na "SurfaceView", podczas gdy ja osobno słucham danych. –

+0

Ja również chciałbym renderować go nie dublowany w SurfaceView. Czy kiedykolwiek znalazłeś rozwiązanie? –

11

Jeśli chcesz użyć kamery przedniej do skanowania kodów kreskowych, możesz użyć TextureView i zastosować do niej matrycę transformacji. Po zaktualizowaniu tekstury można odczytać dane obrazu i użyć tego.

Zobacz https://github.com/hadders/camera-reverse

szczególności z MainActivity.java

mCamera.setDisplayOrientation(90); 
Matrix matrix = new Matrix(); 
matrix.setScale(-1, 1); 
matrix.postTranslate(width, 0); 
mTextureView.setTransform(matrix); 
+0

, którego kod z github nie działa. – CENT1PEDE

+0

Hej @ GreenFox Fox. Właśnie sklonowałem repozytorium i uruchomiłem "gradle installDebug" z wiersza poleceń i zainstalowałem na moim Nexusie 5. To działa. Gdy uruchomię aplikację i zatrzymam tekst "ABC", na ekranie pojawi się "ABC" zamiast normalnego odwróconego "CBA", zgodnie z oczekiwaniami. Jaki jest dokładny problem? – Steve

+0

, ale kiedy go użyłem, nic nie działa .. – CENT1PEDE

Powiązane problemy