Я пытался создать приложение, которое также могло бы позволить пользователю выбирать обои, которые он хотел бы установить.Я справился с этим, позвонив в галерею Intent.Как только пользователь выбирает конкретное изображение, мне возвращается путь к данным изображения, который затем я предварительно просматриваю для пользователя, устанавливая изображение на просмотр изображения.
Проблема возникает, когда размер изображения (и /или разрешение) больше, чем ожидает Android.Это приводит к сбою моего модуля.
И как будто этого было недостаточно, когда пользователь пытается выбрать другие обои (и в моем тестовом случае «другие» обои также были размером> 700 КБ), то приложение вылетает с «OutOfMemoryException»...
Помогите мне здесь, ребята !!!
Для намерения галереи я использую:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE);
Для установки обоев я использую:
InputStream is = getContentResolver().openInputStream(Uri.parse(uri_returned_from_intent));
Bitmap bgImage = BitmapFactory.decodeStream(is);//OutOfMemory error thrown here
setWallpaper(bgImage);
Итак, у меня есть две проблемы:
- Как обрезать изображение перед тем, как установить его в качестве обоев ...
- Не могу понять y OutOfMemoryException выброшено, потому что ни одна изразмеры моего изображения превышают даже 1 МБ ... и я думаю, что бюджет виртуальной машины в случае N1 составляет 24 МБ, если я не ошибаюсь ...