Форум программистов, компьютерный форум CyberForum.ru

Изменить код работы с Bitmap в связи с OutOfMemoryError - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Поиск по лист вью http://www.cyberforum.ru/android-dev/thread935837.html
Помогите, кому не сложно, с приложением...не отображается лист вью, и соответственно не производится по нем поиск... хотя, по идее, он должен осуществляться, но даже массив не выводится!! класс для осуществления поиска... public class FragmentView3 extends Fragment { String listview_names = {"1","2","3","4","лол"}; public EditText et; public ListView lv;
Программирование Android Получение координат нажатия У меня проблема - я только начал разрабатывать под android и одна из первых трудностей - как обработать нажатие (считать координаты, силу нажатия). Помогите кто разбирается в этом. http://www.cyberforum.ru/android-dev/thread935757.html
Программирование Android OpenGL
Наверное, наитупейший вопрос, но как работать с картинкой в OpenGL? Как инициализировать? В примере на офсайте и во многих остальных примерах, что мне довелось увидеть, отрисовывают какие-то фигурки. А мне нужно как-то работать с картинкой, а-ля setImageResource.
Размер экрана без шапки Программирование Android
Создаю диалог вручную. Нужно знать точный размер экрана без учета панели с батареей, вай-фаем, связью, иконками... Как узнать полный размер - знаю: Display display = context.getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); Но как отрезать шапку? Хочу сделать отступ от бортиков МОЕГО приложения в 5 мм, а...
Программирование Android listView с подзагрузкой http://www.cyberforum.ru/android-dev/thread935560.html
В listView выводится список новостей с новостного сайта, парсится из json. Как можно выводить только 10 новостей, а после того как прокрутил их чтоб ещё загружались 10 и так далее? или прокрутив 10 новостей появлялась кнопка показать ещё и подгружалось ещё 10 новостей.
Программирование Android Скомпилировать apk в Android Studio У меня есть проект, который я разрабатывал в Visual Studio. Сейчас мне надо создать апк файл для андроида. Я хочу это сделать через Android Studio c помощью PhoneGap. Как мне это сделать? подробнее

Показать сообщение отдельно
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666

Изменить код работы с Bitmap в связи с OutOfMemoryError - Программирование Android

09.08.2013, 16:47. Просмотров 1711. Ответов 12
Метки (Все метки)

Прочитал статью ( http://habrahabr.ru/post/161027/#habracut ) и хотел бы изменить свой код, так как в данный момент приложение испытывает OutOfMemoryError.

У меня есть код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@Override
        protected HashMap<String, Object> doInBackground(
                HashMap<String, Object>... hm) {
 
            InputStream iStream = null;
            String imgUrl = (String) hm[0].get("imageLogo_path");
            int position = (Integer) hm[0].get("position");
 
            URL url;
            try {
                url = new URL(imgUrl);
                HttpURLConnection urlConnection = (HttpURLConnection) url
                        .openConnection();
                urlConnection.connect();
                iStream = urlConnection.getInputStream();
                File cacheDirectory = getBaseContext().getCacheDir();
                File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"
                        + position + ".png");
                FileOutputStream fOutStream = new FileOutputStream(tmpFile);
                Bitmap b = BitmapFactory.decodeStream(iStream);
                b.compress(Bitmap.CompressFormat.PNG, 100, fOutStream);
                fOutStream.flush();
                fOutStream.close();
 
                HashMap<String, Object> hmBitmap = new HashMap<String, Object>();
                hmBitmap.put("imageLogo", tmpFile.getPath());
                hmBitmap.put("position", position);
                return hmBitmap;
 
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
а в статье имеется пример:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
InputStream in = ... //Ваш InputStream
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, o);
in.close();
int origWidth = o.outWidth; //исходная ширина 
int origHeight = o.outHeight; //исходная высота 
int bytesPerPixel = 2 //соответствует RGB_555 конфигурации
int maxSize = 480 * 800 * bytesPerPixel; //Максимально разрешенный размер Bitmap
int desiredWidth = …; //Нужная ширина
int desiredHeight = …; //Нужная высота
int desiredSize = _ desiredWidth * _ desiredHeight * bytesPerPixel; //Максимально разрешенный размер Bitmap для заданных width х height
if (desiredSize < maxSize) maxSize = desiredSize;
int scale = 1; //кратность уменьшения
int origSize = origWidth * origHeight * bytesPerPixel;
//высчитываем кратность уменьшения
if (origWidth > origHeight) {
    scale = Math.round((float) origHeight / (float) desiredHeight);
} else {
    scale = Math.round((float) origWidth / (float) desiredWidth);
}
 
o = new BitmapFactory.Options();
o.inSampleSize = scale;
o.inPreferredConfig = Config.RGB_565;
            
in = … //Ваш InputStream. Важно - открыть его нужно еще раз, т.к второй раз читать из одного и того же InputStream не разрешается (Проверено на ByteArrayInputStream и FileInputStream).
Bitmap bitmap = BitmapFactory.decodeStream(in, null, o); //Полученный Bitmap
но как я не пытался, совместить код у меня не получается. Листвью с записями отображается но без картинок. Сыпятся разные ошибки.
- resolveUri failed on bad bitmap uri: /data/data/com.androidcompany.projectmy/cache/wpta_0.png
- SkImageDecoder::Factory returned null
а иногда и вовсе не запускается крошится.

проверял папку кеша, а она пустая.

Помогите всё сделал правильно, чтобы работало. Может я что-то упускаю...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru