2010-06-14 6 views
2

나는 설정하고 싶은 배경 화면을 사용자가 선택할 수있는 기능을 갖춘 앱을 만들려고했습니다. 갤러리 인 텐트를 호출하여이를 관리했습니다. 사용자가 특정 이미지를 선택하면 이미지의 데이터 경로가 반환되어 이미지 뷰로 이미지를 설정하여 사용자에게 미리 보냅니다.코드를 통해 배경 화면 설정

이미지 크기 (및/또는 해상도)가 안드로이드가 기대하는 것보다 큰 경우 문제가 발생합니다. 그 결과 내 모듈이 실패합니다.

그리고 이것이 충분하지 않은 경우 사용자가 다른 배경 화면을 선택하려고합니다 (내 테스트 케이스에서 "다른"배경 화면도 크기가 700kb 이상이었습니다). 그런 다음 앱이 "OutOfMemoryException"과 충돌합니다. .

Helppp me guys !!! 갤러리 의도에 대한

내가 사용

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); 

그래서 내가 다루는이 문제가 :

  1. 하는자를하는 방법을 이미지를 바탕 화면으로 설정하기 전에 이미지 ...
  2. 이해하기 OutOfMemor yException 나의 이미지 크기의 것도, 심지어 1메가바이트을 초과하지 사촌, 던져 ... 그리고 내가 N1의 경우에는 VM 예산을 추측된다
+0

와 남자 몇 가지 기사를 메모리 누수를 언급 ...하지만 그것이 위의 경우 메모리 누수가 VM 예산을 먹을 수 있습니까 ?? – JaVadid

+0

btw "벽지로 설정하기 전에 이미지를 자르는 방법"에 대한 해결책을 찾았습니까? 자르기 사용자 인터페이스를 사용하고 코드를 자르지 않는 솔루션을 찾고 있습니다. – dparnas

답변

3

당신은 메모리를 줄일 수 inSampleSize를 옵션으로 디코딩한다 ... 24MB m 착각이 아니라면입니다 소비.

또 다른 옵션 inJustDecodeBounds 올바른 inSampleSize를 값을 찾기 위해 당신을 도울 수

+1

헤이 Fedor !!! 고맙습니다. 젠체하는 ... 그냥 내가 찾고 있던 것 ... 거의 모든 문제를 해결합니다. U Rock dude !!! – JaVadid