2012-12-05 12 views
5

Posiadam Samsung Galaxy S3, który jest w stanie przechwycić pułapki wielkości ~ 3000 x 2000. I obecnie rozwijam aplikację, która wymaga przechwytywania obrazów. Używam mojego telefonu jako debuggera i ustawiam najlepszy możliwy rozmiar, jaki oferuje urządzenie dla przechwytywanego obrazu.Wywołanie polecenia Android onPictureTaken wyrzuca wyjątek z pamięci w Bitmap.decodeByteArray

Jeśli jednak skorzystam z tego ustawienia, wywołanie zwrotne onPictureTaken podaje błąd braku pamięci w pierwszym wierszu w metodzie Bitmap.decodeByteArray, w której próbuję zdekodować przechwycone bajty na bitmapę. Jeśli użyję Bitmap.Options.inSampleSize = 2, nie wystąpi błąd braku pamięci.

Chcę, aby aplikacja była w stanie przechwycić to, co najlepsze, a urządzenie to robi we własnej aplikacji, ale nie mogę tego zrobić w moim. Nie rozumiem. Jak mogę rozwiązać ten problem?

+0

Obraz może być zbyt duża, aby obsłużyć. Wyciek pamięci. – Raghunandan

+0

To prawdopodobnie jest, ale dlaczego moja aplikacja nie może przechwytywać obrazów o rozmiarze, który najlepiej oferuje urządzenie. Sam urządzenie jest zdolne do robienia zdjęć we własnej aplikacji do aparatu, dlaczego nie mogę w moim? – rainbowunicorn

+0

proszę napisać kod, aby społeczność mogła Ci pomóc. – Raghunandan

Odpowiedz

0

Aplikacja na Androida musi współpracować z około 16 MB pamięci. jeśli zamierzasz ustawić inSampleSize na bardzo dużą liczbę, aby uzyskać jakość obrazu taką, jaka jest, lub jeśli nie wykonujesz próbkowania, prawdopodobnie dostaniesz wyjątek pamięci poza pamięcią.

Wyjazd ten link przykładowej aplikacji: Displaying Bitmaps Efficiently

Powiązane problemy