I’m working on an app where the user types something in a textview, then clicks a button. This button starts a thread which super imposes the text on a bitmap in the resources file, then saves this new bitmap to the SD card and starts an intent that allows the user to send/email this image. I have already written this code and it runs on my galaxy vibrant but it doesn’t run on the android emulator. This app uses level 8 API and is meant to run on 2.2 platform. I have tried to run this its own thread and also as asynctask with no luck. I have also read many stackoverflow questions and followed their advice on creating bitmaps without overflowing emulator heap size. I’ve tried instantiating my variables as fields and also within the methods themselves. Here is my code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("INFO","At 2###########");
setContentView(R.layout.blank);
Thread thread = new Thread(this);
thread.start();
}
public void run() {
BitmapFactory.Options factoryOptions = new BitmapFactory.Options();
factoryOptions.inPurgeable = true;
factoryOptions.inInputShareable = true;
Bitmap tempCBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.c6,factoryOptions);
cBitmap = tempCBitmap.copy(Bitmap.Config.ARGB_8888, true);
PrepareLines();
Bitmap dBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dummy);
Bitmap textLayer = Bitmap.createScaledBitmap(dBitmap, w, h, false);
Bitmap workLayer = Bitmap.createScaledBitmap(dBitmap, w, h, false);
canvas = new Canvas(textLayer);
canvas.drawText(lineOne, xCenter, yCenter, paint);
canvas.drawText(lineTwo, xCenter, yCenter+20, paint);
canvas.drawText(lineThree, xCenter, yCenter+40, paint);
Camera mCamera = new Camera();
Matrix mMatrix = new Matrix();
mCamera.save();
mCamera.rotateY(yDegreeRotate+8);
mCamera.getMatrix(mMatrix);
mCamera.restore();
mMatrix.preTranslate(-xCenter, (-yCenter)-verticalOffset);
mMatrix.postTranslate(xCenter, yCenter+verticalOffset);
Log.i("INFO","At before first draw ###########");
canvas.setBitmap(workLayer);
canvas.drawBitmap(Bitmap.createBitmap(textLayer,0,0,xCenter,h), mMatrix, paint);
canvas.setBitmap(cBitmap);
canvas.drawBitmap(workLayer, new Matrix(), paint);
mMatrix = new Matrix();
workLayer = Bitmap.createScaledBitmap(dBitmap, w, h, false);
dBitmap = null;
System.gc();
mCamera.rotateY(-yDegreeRotate);
mCamera.getMatrix(mMatrix);
// WIN DEATH HERE
mCamera.restore();
// WIN DEATH HERE;
mMatrix.preTranslate(0 , (-yCenter)-verticalOffset);
mMatrix.postTranslate(xCenter, (yCenter)+verticalOffset);
Log.i("INFO","At before second draw ###########");
canvas.setBitmap(workLayer);
canvas.drawBitmap(Bitmap.createBitmap(textLayer,xCenter,0,w-xCenter,h), mMatrix, paint);
canvas.setBitmap(cBitmap);
canvas.drawBitmap(workLayer, new Matrix(), paint);
Log.i("INFO","At 20, string measures: "+paint.measureText(message));
canvas = null;
workLayer = null;
textLayer = null;
System.gc();
makeFileAndIntent();
}
Here is my most recent logcat output
01-14 18:00:43.453: D/AndroidRuntime(388): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
01-14 18:00:43.453: D/AndroidRuntime(388): CheckJNI is ON
01-14 18:00:43.543: D/AndroidRuntime(388): --- registering native functions ---
01-14 18:00:44.063: D/dalvikvm(255): GC_EXPLICIT freed 507 objects / 28896 bytes in 126ms
01-14 18:00:44.173: D/PackageParser(59): Scanning package: /data/app/vmdl47264.tmp
01-14 18:00:44.173: W/PackageParser(59): No actions in intent filter at /data/app/vmdl47264.tmp Binary XML file line #30
01-14 18:00:44.443: I/PackageManager(59): Removing non-system package:com.gigabites.fortune
01-14 18:00:44.443: I/ActivityManager(59): Force stopping package com.gigabites.fortune uid=10040
01-14 18:00:44.543: D/PackageManager(59): Scanning package com.gigabites.fortune
01-14 18:00:44.543: I/PackageManager(59): Package com.gigabites.fortune codePath changed from /data/app/com.gigabites.fortune-2.apk to /data/app/com.gigabites.fortune-1.apk; Retaining data and using new
01-14 18:00:44.543: I/PackageManager(59): /data/app/com.gigabites.fortune-1.apk changed; unpacking
01-14 18:00:44.553: D/installd(35): DexInv: --- BEGIN '/data/app/com.gigabites.fortune-1.apk' ---
01-14 18:00:44.803: D/dalvikvm(395): DexOpt: load 37ms, verify 132ms, opt 3ms
01-14 18:00:44.813: D/installd(35): DexInv: --- END '/data/app/com.gigabites.fortune-1.apk' (success) ---
01-14 18:00:44.813: W/PackageManager(59): Code path for pkg : com.gigabites.fortune changing from /data/app/com.gigabites.fortune-2.apk to /data/app/com.gigabites.fortune-1.apk
01-14 18:00:44.823: W/PackageManager(59): Resource path for pkg : com.gigabites.fortune changing from /data/app/com.gigabites.fortune-2.apk to /data/app/com.gigabites.fortune-1.apk
01-14 18:00:44.823: D/PackageManager(59): Activities: com.gigabites.fortune.FortuneCookieActivity com.gigabites.fortune.NewCookieActivity com.gigabites.fortune.BrowseStockActivity com.gigabites.fortune.BrowseSavedActivity com.gigabites.fortune.SendCookieActivity com.gigabites.fortune.BuildActivity
01-14 18:00:44.833: I/ActivityManager(59): Force stopping package com.gigabites.fortune uid=10040
01-14 18:00:44.913: I/installd(35): move /data/dalvik-cache/data@app@com.gigabites.fortune-1.apk@classes.dex -> /data/dalvik-cache/data@app@com.gigabites.fortune-1.apk@classes.dex
01-14 18:00:44.913: D/PackageManager(59): New package installed in /data/app/com.gigabites.fortune-1.apk
01-14 18:00:45.013: I/ActivityManager(59): Force stopping package com.gigabites.fortune uid=10040
01-14 18:00:45.213: D/dalvikvm(59): GC_EXPLICIT freed 8993 objects / 895112 bytes in 187ms
01-14 18:00:45.253: D/dalvikvm(116): GC_EXPLICIT freed 1237 objects / 68112 bytes in 69ms
01-14 18:00:45.383: W/RecognitionManagerService(59): no available voice recognition services found
01-14 18:00:45.503: D/dalvikvm(143): GC_EXPLICIT freed 2329 objects / 127024 bytes in 241ms
01-14 18:00:45.604: D/dalvikvm(59): GC_EXPLICIT freed 5971 objects / 316560 bytes in 76ms
01-14 18:00:45.613: I/installd(35): unlink /data/dalvik-cache/data@app@com.gigabites.fortune-2.apk@classes.dex
01-14 18:00:45.613: D/AndroidRuntime(388): Shutting down VM
01-14 18:00:45.623: D/dalvikvm(388): Debugger has detached; object registry had 1 entries
01-14 18:00:46.043: D/AndroidRuntime(401): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
01-14 18:00:46.043: D/AndroidRuntime(401): CheckJNI is ON
01-14 18:00:46.133: D/AndroidRuntime(401): --- registering native functions ---
01-14 18:00:46.543: I/ActivityManager(59): Force stopping package com.gigabites.fortune uid=10040
01-14 18:00:46.543: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.gigabites.fortune/.BuildActivity }
01-14 18:00:46.563: I/ActivityManager(59): Start proc com.gigabites.fortune for activity com.gigabites.fortune/.BuildActivity: pid=407 uid=10040 gids={1015}
01-14 18:00:46.574: W/WindowManager(59): HistoryRecord{450598a8 com.gigabites.fortune/.BuildActivity} failed creating starting window
01-14 18:00:46.574: W/WindowManager(59): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
01-14 18:00:46.574: W/WindowManager(59): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
01-14 18:00:46.574: W/WindowManager(59): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
01-14 18:00:46.574: W/WindowManager(59): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
01-14 18:00:46.574: W/WindowManager(59): at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
01-14 18:00:46.574: W/WindowManager(59): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-14 18:00:46.574: W/WindowManager(59): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-14 18:00:46.574: W/WindowManager(59): at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2165)
01-14 18:00:46.574: W/WindowManager(59): at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2220)
01-14 18:00:46.574: W/WindowManager(59): at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1407)
01-14 18:00:46.574: W/WindowManager(59): at com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:894)
01-14 18:00:46.574: W/WindowManager(59): at com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:9007)
01-14 18:00:46.574: W/WindowManager(59): at android.os.Handler.dispatchMessage(Handler.java:99)
01-14 18:00:46.574: W/WindowManager(59): at android.os.Looper.loop(Looper.java:123)
01-14 18:00:46.574: W/WindowManager(59): at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:570)
01-14 18:00:46.574: W/WindowManager(59): Caused by: java.lang.reflect.InvocationTargetException
01-14 18:00:46.574: W/WindowManager(59): at android.widget.FrameLayout.<init>(FrameLayout.java:79)
01-14 18:00:46.574: W/WindowManager(59): at java.lang.reflect.Constructor.constructNative(Native Method)
01-14 18:00:46.574: W/WindowManager(59): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
01-14 18:00:46.574: W/WindowManager(59): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
01-14 18:00:46.574: W/WindowManager(59): ... 13 more
01-14 18:00:46.574: W/WindowManager(59): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1}
01-14 18:00:46.574: W/WindowManager(59): at android.content.res.Resources.loadDrawable(Resources.java:1681)
01-14 18:00:46.574: W/WindowManager(59): at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
01-14 18:00:46.574: W/WindowManager(59): at android.widget.FrameLayout.<init>(FrameLayout.java:91)
01-14 18:00:46.574: W/WindowManager(59): ... 17 more
01-14 18:00:46.574: D/AndroidRuntime(401): Shutting down VM
01-14 18:00:46.583: D/dalvikvm(401): Debugger has detached; object registry had 1 entries
01-14 18:00:46.744: W/ActivityThread(407): Application com.gigabites.fortune is waiting for the debugger on port 8100...
01-14 18:00:46.783: I/System.out(407): Sending WAIT chunk
01-14 18:00:46.783: I/dalvikvm(407): Debugger is active
01-14 18:00:46.983: I/System.out(407): Debugger has connected
01-14 18:00:46.983: I/System.out(407): waiting for debugger to settle...
01-14 18:00:47.183: I/System.out(407): waiting for debugger to settle...
01-14 18:00:47.383: I/System.out(407): waiting for debugger to settle...
01-14 18:00:47.583: I/System.out(407): waiting for debugger to settle...
01-14 18:00:47.783: I/System.out(407): waiting for debugger to settle...
01-14 18:00:47.983: I/System.out(407): waiting for debugger to settle...
01-14 18:00:48.183: I/System.out(407): waiting for debugger to settle...
01-14 18:00:48.393: I/System.out(407): debugger has settled (1335)
01-14 18:00:50.373: I/INFO(407): At 2###########
01-14 18:00:50.433: I/INFO(407): At 1###########
01-14 18:00:50.663: D/dalvikvm(407): GC_EXTERNAL_ALLOC freed 725 objects / 54320 bytes in 39ms
01-14 18:00:51.063: I/ActivityManager(59): Displayed activity com.gigabites.fortune/.BuildActivity: 4505 ms (total 273315 ms)
01-14 18:00:51.103: I/INFO(407): At 2###########
01-14 18:00:51.103: I/INFO(407): At 20, string measures: 653.0
01-14 18:00:51.164: D/dalvikvm(407): GC_EXTERNAL_ALLOC freed 425 objects / 18528 bytes in 34ms
01-14 18:00:51.223: D/dalvikvm(407): GC_EXTERNAL_ALLOC freed 47 objects / 1776 bytes in 31ms
01-14 18:00:51.293: I/INFO(407): At before first draw ###########
01-14 18:00:51.373: D/dalvikvm(407): GC_EXTERNAL_ALLOC freed 15 objects / 680 bytes in 29ms
01-14 18:00:51.433: D/dalvikvm(407): GC_EXPLICIT freed 12 objects / 456 bytes in 30ms
01-14 18:00:51.576: I/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-14 18:00:51.576: I/DEBUG(31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
01-14 18:00:51.583: I/DEBUG(31): pid: 407, tid: 414 >>> com.gigabites.fortune <<<
01-14 18:00:51.583: I/DEBUG(31): signal 11 (SIGSEGV), fault addr deadbaad
01-14 18:00:51.583: I/DEBUG(31): r0 00000000 r1 0000000c r2 00000027 r3 00000000
01-14 18:00:51.583: I/DEBUG(31): r4 00000000 r5 deadbaad r6 00001728 r7 00000000
01-14 18:00:51.583: I/DEBUG(31): r8 46d2ed10 r9 4185ff74 10 00233e40 fp 4185ff70
01-14 18:00:51.583: I/DEBUG(31): ip ffffffff sp 46d2ec80 lr afd154c5 pc afd11dc4 cpsr 40000030
01-14 18:00:51.643: I/DEBUG(31): #00 pc 00011dc4 /system/lib/libc.so
01-14 18:00:51.643: I/DEBUG(31): #01 pc 0000be1c /system/lib/libc.so
01-14 18:00:51.643: I/DEBUG(31): code around pc:
01-14 18:00:51.643: I/DEBUG(31): afd11da4 1c2bd00b 2d00682d e026d1fb 2b0068db
01-14 18:00:51.643: I/DEBUG(31): afd11db4 4e17d003 51a02001 4d164798 24002227
01-14 18:00:51.643: I/DEBUG(31): afd11dc4 f7fb702a 2106ee14 ef10f7fc 05592380
01-14 18:00:51.643: I/DEBUG(31): afd11dd4 6091aa01 1c116054 94012006 eab6f7fc
01-14 18:00:51.643: I/DEBUG(31): afd11de4 2200a905 f7fc2002 f7fbeac2 2106ee00
01-14 18:00:51.653: I/DEBUG(31): code around lr:
01-14 18:00:51.653: I/DEBUG(31): afd154a4 b0834a0d 589c447b 26009001 686768a5
01-14 18:00:51.653: I/DEBUG(31): afd154b4 220ce008 2b005eab 1c28d003 47889901
01-14 18:00:51.653: I/DEBUG(31): afd154c4 35544306 d5f43f01 2c006824 b003d1ee
01-14 18:00:51.653: I/DEBUG(31): afd154d4 bdf01c30 0002ae7c 000000d4 1c0fb5f0
01-14 18:00:51.653: I/DEBUG(31): afd154e4 43551c3d a904b087 1c16ac01 604d9004
01-14 18:00:51.653: I/DEBUG(31): stack:
01-14 18:00:51.653: I/DEBUG(31): 46d2ec40 00000015
01-14 18:00:51.653: I/DEBUG(31): 46d2ec44 afd1453b /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec48 afd405a0 /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec4c afd4054c /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec50 00000000
01-14 18:00:51.653: I/DEBUG(31): 46d2ec54 afd154c5 /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec58 00000000
01-14 18:00:51.653: I/DEBUG(31): 46d2ec5c afd1450d /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec60 afd41724 /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec64 afd40328 /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec68 00000000
01-14 18:00:51.653: I/DEBUG(31): 46d2ec6c 00001728
01-14 18:00:51.653: I/DEBUG(31): 46d2ec70 00000000
01-14 18:00:51.653: I/DEBUG(31): 46d2ec74 afd147ab /system/lib/libc.so
01-14 18:00:51.653: I/DEBUG(31): 46d2ec78 df002777
01-14 18:00:51.663: I/DEBUG(31): 46d2ec7c e3a070ad
01-14 18:00:51.663: I/DEBUG(31): #00 46d2ec80 8086caa4 /system/lib/libdvm.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ec84 80870eea /system/lib/libdvm.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ec88 afd418dc /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ec8c afd10510 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ec90 afd40328 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ec94 fffffbdf
01-14 18:00:51.663: I/DEBUG(31): 46d2ec98 afd40328 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ec9c afd41724 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2eca0 0000a000 [heap]
01-14 18:00:51.663: I/DEBUG(31): 46d2eca4 afd0be21 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): #01 46d2eca8 afd40328 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ecac afd0be21 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ecb0 418cb358 /dev/ashmem/dalvik-LinearAlloc (deleted)
01-14 18:00:51.663: I/DEBUG(31): 46d2ecb4 80846dad /system/lib/libdvm.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ecb8 0011cda0 [heap]
01-14 18:00:51.663: I/DEBUG(31): 46d2ecbc 00118b68 [heap]
01-14 18:00:51.663: I/DEBUG(31): 46d2ecc0 44f461e0 /dev/ashmem/mspace/dalvik-heap/2 (deleted)
01-14 18:00:51.663: I/DEBUG(31): 46d2ecc4 8083d9b9 /system/lib/libdvm.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ecc8 000013fc
01-14 18:00:51.663: I/DEBUG(31): 46d2eccc 00130eb8 [heap]
01-14 18:00:51.663: I/DEBUG(31): 46d2ecd0 44f461e0 /dev/ashmem/mspace/dalvik-heap/2 (deleted)
01-14 18:00:51.663: I/DEBUG(31): 46d2ecd4 0011cda0 [heap]
01-14 18:00:51.663: I/DEBUG(31): 46d2ecd8 00240c28 [heap]
01-14 18:00:51.663: I/DEBUG(31): 46d2ecdc 42c3d5f6 /data/dalvik-cache/system@framework@framework.jar@classes.dex
01-14 18:00:51.663: I/DEBUG(31): 46d2ece0 4185ff7c
01-14 18:00:51.663: I/DEBUG(31): 46d2ece4 afd0cd81 /system/lib/libc.so
01-14 18:00:51.663: I/DEBUG(31): 46d2ece8 0011cda0 [heap]
01-14 18:00:51.673: I/DEBUG(31): 46d2ecec afc008e3 /system/lib/libstdc++.so
01-14 18:00:52.053: I/BootReceiver(59): Copying /data/tombstones/tombstone_03 to DropBox (SYSTEM_TOMBSTONE)
01-14 18:00:52.073: D/Zygote(33): Process 407 terminated by signal (11)
01-14 18:00:52.143: D/dalvikvm(59): GC_FOR_MALLOC freed 2390 objects / 360624 bytes in 80ms
01-14 18:00:52.143: I/WindowManager(59): WIN DEATH: Window{450eb158 com.gigabites.fortune/com.gigabites.fortune.BuildActivity paused=false}
01-14 18:00:52.143: I/ActivityManager(59): Process com.gigabites.fortune (pid 407) has died.
01-14 18:00:52.154: I/UsageStats(59): Unexpected resume of com.android.launcher while already resumed in com.gigabites.fortune
01-14 18:00:52.183: W/InputManagerService(59): Got RemoteException sending setActive(false) notification to pid 407 uid 10040
01-14 18:00:57.414: D/dalvikvm(255): GC_EXPLICIT freed 224 objects / 15056 bytes in 118ms
01-14 18:01:05.203: D/dalvikvm(262): GC_EXPLICIT freed 2061 objects / 147680 bytes in 127ms
01-14 18:01:06.103: D/SntpClient(59): request time failed: java.net.SocketException: Address family not supported by protocol
Edits: Added logcat and tried to run using a basic XML layout on setContentView() to make sure it has nothing to do with my layout.
Do you have your emulator set up correctly? Try looking at your avd editor in eclipse and make sure you have a sd card set up.