android - Out of memory error on getDrawable() -


i want current image set wallpaper in android device , set image view in list after scaling . doing id this:

final wallpapermanager wm = wallpapermanager.getinstance(this); final drawable wallpaperdrawable = wm.getdrawable(); bitmap bitmap = drawabletobitmap(wallpaperdrawable); imageview.setimagebitmap(bitmap); 

the drawabletobitmap function follows:

public static bitmap drawabletobitmap (drawable drawable) {     if (drawable instanceof bitmapdrawable) {         return ((bitmapdrawable)drawable).getbitmap();     }      int width = drawable.getintrinsicwidth();     width = width > 0 ? width : 1;     int height = drawable.getintrinsicheight();     height = height > 0 ? height : 1;      bitmap bitmap = bitmap.createbitmap(width, height, bitmap.config.argb_8888);     canvas canvas = new canvas(bitmap);     drawable.setbounds(0, 0, canvas.getwidth(), canvas.getheight());     drawable.draw(canvas);      return bitmap; } 

but error :

01-29 13:30:50.150: e/dalvikvm-heap(3281): out of memory on 3891216-byte allocation.     01-29 13:30:50.160: i/dalvikvm(3281): "main" prio=5 tid=1 runnable     01-29 13:30:50.160: i/dalvikvm(3281):   | group="main" scount=0 dscount=0 obj=0x409c0460 self=0x12810     01-29 13:30:50.170: i/dalvikvm(3281):   | systid=3281 nice=0 sched=0/0 cgrp=default handle=1074082952     01-29 13:30:50.180: i/dalvikvm(3281):   | schedstat=( 1725234737 955825527 142 ) utm=152 stm=20 core=0     01-29 13:30:50.190: i/dalvikvm(3281):   @ android.graphics.bitmap.nativecreate(native method)     01-29 13:30:50.190: i/dalvikvm(3281):   @ android.graphics.bitmap.createbitmap(bitmap.java:605)     01-29 13:30:50.190: i/dalvikvm(3281):   @ android.graphics.bitmap.createbitmap(bitmap.java:585)     01-29 13:30:50.190: i/dalvikvm(3281):   @ android.app.wallpapermanager.generatebitmap(wallpapermanager.java:729)     01-29 13:30:50.190: i/dalvikvm(3281):   @ android.app.wallpapermanager$globals.getcurrentwallpaperlocked(wallpapermanager.java:265)     01-29 13:30:50.200: i/dalvikvm(3281):   @ android.app.wallpapermanager$globals.peekwallpaperbitmap(wallpapermanager.java:230)     01-29 13:30:50.200: i/dalvikvm(3281):   @ android.app.wallpapermanager.getdrawable(wallpapermanager.java:350)     01-29 13:30:50.210: i/dalvikvm(3281):   @ storeapps.com.profilechanger.listactivity.oncreate(listactivity.java:64)     01-29 13:30:50.210: i/dalvikvm(3281):   @ android.app.activity.performcreate(activity.java:4466)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1049)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.app.activitythread.performlaunchactivity(activitythread.java:1920)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.app.activitythread.handlelaunchactivity(activitythread.java:1981)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.app.activitythread.access$600(activitythread.java:123)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.app.activitythread$h.handlemessage(activitythread.java:1147)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.os.handler.dispatchmessage(handler.java:99)     01-29 13:30:50.220: i/dalvikvm(3281):   @ android.os.looper.loop(looper.java:137)     01-29 13:30:50.230: i/dalvikvm(3281):   @ android.app.activitythread.main(activitythread.java:4424)     01-29 13:30:50.230: i/dalvikvm(3281):   @ java.lang.reflect.method.invokenative(native method)     01-29 13:30:50.230: i/dalvikvm(3281):   @ java.lang.reflect.method.invoke(method.java:511)     01-29 13:30:50.230: i/dalvikvm(3281):   @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784)     01-29 13:30:50.230: i/dalvikvm(3281):   @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551)     01-29 13:30:50.230: i/dalvikvm(3281):   @ dalvik.system.nativestart.main(native method)     01-29 13:30:50.270: i/process(570): sending signal. pid: 3281 sig: 3     01-29 13:30:50.270: i/dalvikvm(3281): threadid=3: reacting signal 3     01-29 13:30:50.310: w/wallpapermanager(3281): can't generate default bitmap     01-29 13:30:50.310: w/wallpapermanager(3281): java.lang.outofmemoryerror     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.graphics.bitmap.nativecreate(native method)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.graphics.bitmap.createbitmap(bitmap.java:605)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.graphics.bitmap.createbitmap(bitmap.java:585)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.wallpapermanager.generatebitmap(wallpapermanager.java:729)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.wallpapermanager$globals.getcurrentwallpaperlocked(wallpapermanager.java:265)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.wallpapermanager$globals.peekwallpaperbitmap(wallpapermanager.java:230)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.wallpapermanager.getdrawable(wallpapermanager.java:350)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ storeapps.com.profilechanger.listactivity.oncreate(listactivity.java:64)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.activity.performcreate(activity.java:4466)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1049)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.activitythread.performlaunchactivity(activitythread.java:1920)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.activitythread.handlelaunchactivity(activitythread.java:1981)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.activitythread.access$600(activitythread.java:123)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.activitythread$h.handlemessage(activitythread.java:1147)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.os.handler.dispatchmessage(handler.java:99)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.os.looper.loop(looper.java:137)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ android.app.activitythread.main(activitythread.java:4424)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ java.lang.reflect.method.invokenative(native method)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ java.lang.reflect.method.invoke(method.java:511)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551)     01-29 13:30:50.310: w/wallpapermanager(3281):   @ dalvik.system.nativestart.main(native method)     01-29 13:30:50.310: d/profilechangerapp(3281):  wallpaper manager :android.app.wallpapermanager@41085b88     01-29 13:30:50.320: d/profilechangerapp(3281): image not null     01-29 13:30:50.320: i/dalvikvm(3281): wrote stack traces '/data/anr/traces.txt'     01-29 13:30:50.340: d/androidruntime(3281): shutting down vm     01-29 13:30:50.371: w/dalvikvm(3281): threadid=1: thread exiting uncaught exception (group=0x409bf1f8)     01-29 13:30:50.430: e/androidruntime(3281): fatal exception: main     01-29 13:30:50.430: e/androidruntime(3281): java.lang.runtimeexception: unable start activity componentinfo{storeapps.com.profilechanger/storeapps.com.profilechanger.listactivity}: java.lang.nullpointerexception     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activitythread.performlaunchactivity(activitythread.java:1956)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activitythread.handlelaunchactivity(activitythread.java:1981)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activitythread.access$600(activitythread.java:123)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activitythread$h.handlemessage(activitythread.java:1147)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.os.handler.dispatchmessage(handler.java:99)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.os.looper.loop(looper.java:137)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activitythread.main(activitythread.java:4424)     01-29 13:30:50.430: e/androidruntime(3281):     @ java.lang.reflect.method.invokenative(native method)     01-29 13:30:50.430: e/androidruntime(3281):     @ java.lang.reflect.method.invoke(method.java:511)     01-29 13:30:50.430: e/androidruntime(3281):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784)     01-29 13:30:50.430: e/androidruntime(3281):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551)     01-29 13:30:50.430: e/androidruntime(3281):     @ dalvik.system.nativestart.main(native method)     01-29 13:30:50.430: e/androidruntime(3281): caused by: java.lang.nullpointerexception     01-29 13:30:50.430: e/androidruntime(3281):     @ storeapps.com.profilechanger.listactivity.oncreate(listactivity.java:70)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activity.performcreate(activity.java:4466)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1049)     01-29 13:30:50.430: e/androidruntime(3281):     @ android.app.activitythread.performlaunchactivity(activitythread.java:1920)     01-29 13:30:50.430: e/androidruntime(3281):     ... 11 more 

please me !

resize image bitmap

bitmap bitmap = bitmapfactory.decoderesource(mcontext.getresources(), r.drawable.yourimagename); 

above line bitmap drawable. no need apart adding above line bitmap drawable.

int height = (bitmap.getheight() * 512 / bitmap.getwidth()); bitmap scale = bitmap.createscaledbitmap(bitmap, 512, height, true); imageview.setimagebitmap(scale); 

Comments