I have started building an android app that uses the ZXing library to read barcodes. The app I am developing uses a standalone barcode scanner- it doesn't use the android Intent object to scan a barcode. I have included the "core.jar" file in my project and have created a java class that scans a bitmap. To do this I have had to use include another class called RGBLuminanceSource- that I found on the java2s.com website. This class can read android bitmaps and is used to help create a LuminanceSource object because android can't use the AWT "BufferedImage" class to create "LuminaceSource" objects. My project compiles and builds without any errors, but when I try to run the project on the emulator (avd android version 1.5) I get the dreaded "the application "x" has stopped working unexpectedly.Please try again" message! I have looked through the DDMS logs and the only thing I can understand is that the emulator can't find the "RGBLuminanceSource" class that I added to the project. This causes problems because in order to decode the bitmap I have to make an object from the RGBLuminaceSource class.
I don't know why this is happening especially when the project builds without any problems, I am quite new to android programming so any help would be much appreciated, thank you.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.me.testgui;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Reader;
import com.google.zxing.common.HybridBinarizer;
import java.io.FileInputStream;
import java.io.InputStream;
/**
*
* @author Gerrard
*/
public class TestClass
{
protected static String scannedBarcode=null;
private static InputStream is;
protected static String testMethod()
{
String st = "THIS IS A TEST!!!!!!!!!!!";
return st;
}
public static void readBarcode(String file) throws NotFoundException
{
try
{
//file = "D:\\NetBeansProjects\\TestGUI\\res\\drawable\\barcode1.jpg";
is = new FileInputStream(file);
// Create a BitMap object of the image to be worked with
Bitmap bm = BitmapFactory.decodeStream(is);//create a bitmap from the imput stream "is" object
RGBLuminanceSource rgbSource = new RGBLuminanceSource(bm);//create an object type RGBLuminanceSource so that the android type bitmap can be read by the ZXing LumincaceSource class
System.out.println("RGBLuminance object created");
LuminanceSource source = rgbSource;
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
com.google.zxing.Result result = reader.decode(bitmap);
String barcode = String.format("Barcode text is: " + result.getText());
scannedBarcode = barcode;
}
catch(Exception e)
{
//Toast.makeText(MainActivity,"ERROR: " +e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
I have also included the DDMS logs to help track down the source of the problem
10-12 20:27:07.126: DEBUG/AndroidRuntime(833): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
10-12 20:27:07.149: DEBUG/AndroidRuntime(833): CheckJNI is ON
10-12 20:27:08.966: DEBUG/AndroidRuntime(833): --- registering native functions ---
10-12 20:27:09.038: INFO/jdwp(833): received file descriptor 22 from ADB
10-12 20:27:10.086: INFO/jdwp(833): Ignoring second debugger -- accepting and dropping
10-12 20:27:12.115: DEBUG/AndroidRuntime(833): Shutting down VM
10-12 20:27:12.135: DEBUG/dalvikvm(833): DestroyJavaVM waiting for non-daemon threads to exit
10-12 20:27:12.175: DEBUG/dalvikvm(833): DestroyJavaVM shutting VM down
10-12 20:27:12.185: DEBUG/dalvikvm(833): HeapWorker thread shutting down
10-12 20:27:12.195: DEBUG/dalvikvm(833): HeapWorker thread has shut down
10-12 20:27:12.206: DEBUG/jdwp(833): JDWP shutting down net...
10-12 20:27:12.229: DEBUG/jdwp(833): +++ peer disconnected
10-12 20:27:12.235: INFO/dalvikvm(833): Debugger has detached; object registry had 1 entries
10-12 20:27:12.376: DEBUG/dalvikvm(833): VM cleaning up
10-12 20:27:12.475: DEBUG/dalvikvm(833): LinearAlloc 0x0 used 629804 of 4194304 (15%)
10-12 20:27:13.345: DEBUG/AndroidRuntime(843): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
10-12 20:27:13.356: DEBUG/AndroidRuntime(843): CheckJNI is ON
10-12 20:27:13.902: DEBUG/AndroidRuntime(843): --- registering native functions ---
10-12 20:27:13.955: INFO/jdwp(843): received file descriptor 22 from ADB
10-12 20:27:13.955: INFO/jdwp(843): Ignoring second debugger -- accepting and dropping
10-12 20:27:16.821: DEBUG/PackageParser(554): Scanning package: /data/app/vmdl33973.tmp
10-12 20:27:17.546: INFO/PackageManager(554): Removing non-system package:org.me.testgui
10-12 20:27:17.595: DEBUG/PackageManager(554): Removing package org.me.testgui
10-12 20:27:17.625: DEBUG/PackageManager(554): Activities: org.me.testgui.MainActivity
10-12 20:27:18.067: DEBUG/PackageManager(554): Scanning package org.me.testgui
10-12 20:27:18.107: INFO/PackageManager(554): /data/app/vmdl33973.tmp changed; unpacking
10-12 20:27:18.185: DEBUG/installd(559): DexInv: --- BEGIN '/data/app/vmdl33973.tmp' ---
10-12 20:27:19.125: DEBUG/dalvikvm(849): DexOpt: load 155ms, verify 235ms, opt 2ms
10-12 20:27:19.195: DEBUG/installd(559): DexInv: --- END '/data/app/vmdl33973.tmp' (success) ---
10-12 20:27:19.205: DEBUG/PackageManager(554): Activities: org.me.testgui.MainActivity
10-12 20:27:19.375: INFO/installd(559): move /data/dalvik-cache/data@app@vmdl33973.tmp@classes.dex -> /data/dalvik-cache/data@app@org.me.testgui.apk@classes.dex
10-12 20:27:19.417: DEBUG/PackageManager(554): New package installed in /data/app/org.me.testgui.apk
10-12 20:27:19.705: DEBUG/AndroidRuntime(843): Shutting down VM
10-12 20:27:19.715: DEBUG/dalvikvm(843): DestroyJavaVM waiting for non-daemon threads to exit
10-12 20:27:19.785: DEBUG/ActivityManager(554): Uninstalling process org.me.testgui
10-12 20:27:19.805: DEBUG/dalvikvm(843): DestroyJavaVM shutting VM down
10-12 20:27:19.805: DEBUG/dalvikvm(843): HeapWorker thread shutting down
10-12 20:27:19.815: DEBUG/dalvikvm(843): HeapWorker thread has shut down
10-12 20:27:19.815: DEBUG/jdwp(843): JDWP shutting down net...
10-12 20:27:19.815: DEBUG/jdwp(843): +++ peer disconnected
10-12 20:27:19.815: INFO/dalvikvm(843): Debugger has detached; object registry had 1 entries
10-12 20:27:19.825: DEBUG/dalvikvm(843): VM cleaning up
10-12 20:27:19.935: DEBUG/dalvikvm(843): LinearAlloc 0x0 used 629572 of 4194304 (15%)
10-12 20:27:20.497: WARN/ResourceType(554): No package identifier when getting value for resource number 0x7f060000
10-12 20:27:20.538: WARN/ResourceType(554): No package identifier when getting value for resource number 0x7f060001
10-12 20:27:20.585: DEBUG/HomeLoaders(620): application intent received: android.intent.action.PACKAGE_REMOVED, replacing=true
10-12 20:27:20.615: DEBUG/HomeLoaders(620): --> package:org.me.testgui
10-12 20:27:20.635: DEBUG/HomeLoaders(620): application intent received: android.intent.action.PACKAGE_ADDED, replacing=true
10-12 20:27:20.655: DEBUG/HomeLoaders(620): --> package:org.me.testgui
10-12 20:27:20.665: DEBUG/HomeLoaders(620): --> update package org.me.testgui
10-12 20:27:20.876: DEBUG/dalvikvm(554): GC freed 9144 objects / 423280 bytes in 323ms
10-12 20:27:21.315: WARN/ResourceType(554): No package identifier when getting value for resource number 0x7f060000
10-12 20:27:21.366: WARN/ResourceType(554): No package identifier when getting value for resource number 0x7f060001
10-12 20:27:22.840: DEBUG/AndroidRuntime(854): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
10-12 20:27:22.845: DEBUG/AndroidRuntime(854): CheckJNI is ON
10-12 20:27:23.786: DEBUG/AndroidRuntime(854): --- registering native functions ---
10-12 20:27:23.795: INFO/jdwp(854): received file descriptor 22 from ADB
10-12 20:27:23.829: INFO/jdwp(854): Ignoring second debugger -- accepting and dropping
10-12 20:27:25.965: INFO/ActivityManager(554): Starting activity: Intent { flags=0x10000000 comp={org.me.testgui/org.me.testgui.MainActivity} }
10-12 20:27:26.876: DEBUG/AndroidRuntime(854): Shutting down VM
10-12 20:27:26.886: DEBUG/dalvikvm(854): DestroyJavaVM waiting for non-daemon threads to exit
10-12 20:27:26.936: DEBUG/dalvikvm(854): DestroyJavaVM shutting VM down
10-12 20:27:26.947: DEBUG/dalvikvm(854): HeapWorker thread shutting down
10-12 20:27:26.947: DEBUG/dalvikvm(854): HeapWorker thread has shut down
10-12 20:27:26.947: DEBUG/jdwp(854): JDWP shutting down net...
10-12 20:27:26.976: DEBUG/jdwp(854): +++ peer disconnected
10-12 20:27:26.976: INFO/dalvikvm(854): Debugger has detached; object registry had 1 entries
10-12 20:27:26.986: DEBUG/dalvikvm(854): VM cleaning up
10-12 20:27:27.046: DEBUG/dalvikvm(854): LinearAlloc 0x0 used 639228 of 4194304 (15%)
10-12 20:27:27.286: INFO/ActivityManager(554): Start proc org.me.testgui for activity org.me.testgui/.MainActivity: pid=862 uid=10024 gids={1006}
10-12 20:27:27.809: INFO/jdwp(862): received file descriptor 10 from ADB
10-12 20:27:28.055: INFO/jdwp(862): Ignoring second debugger -- accepting and dropping
10-12 20:27:28.105: WARN/System.err(862): Can't dispatch DDM chunk 46454154: no handler defined
10-12 20:27:28.146: WARN/System.err(862): Can't dispatch DDM chunk 4d505251: no handler defined
10-12 20:27:29.375: WARN/Resources(862): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f050001}
10-12 20:27:29.915: WARN/dalvikvm(862): Unable to resolve superclass of Lorg/me/testgui/RGBLuminanceSource; (30)
10-12 20:27:29.925: WARN/dalvikvm(862): Link of class 'Lorg/me/testgui/RGBLuminanceSource;' failed
10-12 20:27:29.925: ERROR/dalvikvm(862): Could not find class 'org.me.testgui.RGBLuminanceSource', referenced from method org.me.testgui.TestClass.readBarcode
10-12 20:27:29.936: WARN/dalvikvm(862): VFY: unable to resolve new-instance 68 (Lorg/me/testgui/RGBLuminanceSource;) in Lorg/me/testgui/TestClass;
10-12 20:27:29.936: WARN/dalvikvm(862): VFY: rejecting opcode 0x22 at 0x000d
10-12 20:27:29.936: WARN/dalvikvm(862): VFY: rejected Lorg/me/testgui/TestClass;.readBarcode (Ljava/lang/String;)V
10-12 20:27:29.955: WARN/dalvikvm(862): Verifier rejected class Lorg/me/testgui/TestClass;
10-12 20:27:29.975: DEBUG/AndroidRuntime(862): Shutting down VM
10-12 20:27:29.985: WARN/dalvikvm(862): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
10-12 20:27:29.985: ERROR/AndroidRuntime(862): Uncaught handler: thread main exiting due to uncaught exception
10-12 20:27:30.075: ERROR/AndroidRuntime(862): java.lang.VerifyError: org.me.testgui.TestClass
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at org.me.testgui.MainActivity.onCreate(MainActivity.java:182)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.os.Handler.dispatchMessage(Handler.java:99)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.os.Looper.loop(Looper.java:123)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at java.lang.reflect.Method.invokeNative(Native Method)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at java.lang.reflect.Method.invoke(Method.java:521)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-12 20:27:30.075: ERROR/AndroidRuntime(862): at dalvik.system.NativeStart.main(Native Method)
10-12 20:27:30.105: INFO/Process(554): Sending signal. PID: 862 SIG: 3
10-12 20:27:30.105: INFO/dalvikvm(862): threadid=7: reacting to signal 3
10-12 20:27:30.356: INFO/dalvikvm(862): Wrote stack trace to '/data/anr/traces.txt