我正在尝试制作一个应用程序,该应用程序还可以让用户选择他想要设置的壁纸。我通过调用 Gallery Intent 来解决这个问题。一旦用户选择了特定的图像,图像的数据路径就会返回给我,然后我通过将图像设置到图像视图上来预览给用户。
当图像大小(和/或分辨率)大于 android 的预期时,问题就会出现。这导致我的模块失败。
好像这还不够,当用户尝试选择其他壁纸时(在我的测试用例中,“其他”壁纸的大小也大于 700kb),然后应用程序因“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);
所以我有2个问题要处理:
- 如何在将其设置为墙纸之前裁剪图像...
- 无法理解抛出了 OutOfMemoryException,因为我的图像大小都没有超过 1mb ......如果我没记错的话,我猜 N1 的 VM 预算是 24Mb ......