pot34731
pot34731

Reputation: 191

Android ZXing QR scan

Sorry for my english. I try many times include libruary ZXing for scaning qr code. But not successy. I download libruary from this then i add in eclipse and include core.jar and check Android libruary. Then i add libruary ZXing folder in my app, but i have this error:

05-18 20:34:59.504: W/dalvikvm(19141): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/google/zxing/client/android/CaptureActivity;
05-18 20:34:59.504: W/dalvikvm(19141): Class init failed in newInstance call (Lcom/google/zxing/client/android/CaptureActivity;)
05-18 20:34:59.504: D/AndroidRuntime(19141): Shutting down VM
05-18 20:34:59.504: W/dalvikvm(19141): threadid=1: thread exiting with uncaught exception (group=0x40d4b258)
05-18 20:34:59.509: E/AndroidRuntime(19141): FATAL EXCEPTION: main
05-18 20:34:59.509: E/AndroidRuntime(19141): java.lang.ExceptionInInitializerError
05-18 20:34:59.509: E/AndroidRuntime(19141):    at java.lang.Class.newInstanceImpl(Native Method)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at java.lang.Class.newInstance(Class.java:1319)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1992)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.app.ActivityThread.access$600(ActivityThread.java:134)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.os.Looper.loop(Looper.java:154)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at android.app.ActivityThread.main(ActivityThread.java:4624)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at java.lang.reflect.Method.invokeNative(Native Method)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at java.lang.reflect.Method.invoke(Method.java:511)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
05-18 20:34:59.509: E/AndroidRuntime(19141):    at dalvik.system.NativeStart.main(Native Method)
05-18 20:34:59.509: E/AndroidRuntime(19141): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.ResultMetadataType
05-18 20:34:59.509: E/AndroidRuntime(19141):    at com.google.zxing.client.android.CaptureActivity.<clinit>(CaptureActivity.java:93)
05-18 20:34:59.509: E/AndroidRuntime(19141):    ... 15 more

My MainActivity:

public class MainActivity extends Activity {

    static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Intent intent = new Intent(ACTION_SCAN);
        //intent.setPackage("com.example.bonsitemanager");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }


    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 0) {
           if (resultCode == RESULT_OK) {

              String contents = intent.getStringExtra("SCAN_RESULT");
              String format = intent.getStringExtra("SCAN_RESULT_FORMAT");

              Log.e(contents, contents);
              Log.e(format, format);

           } else if (resultCode == RESULT_CANCELED) {
              // Handle cancel
              Log.i("App","Scan unsuccessful");
           }
      }
   }
}

Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bonsiteqr"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.CAMERA"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
         android:name="com.google.zxing.client.android.CaptureActivity"
         android:configChanges="orientation|keyboardHidden"
         android:screenOrientation="landscape"
         android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
         android:windowSoftInputMode="stateAlwaysHidden" >
         <intent-filter>
             <action android:name="com.google.zxing.client.android.SCAN" />
             <category android:name="android.intent.category.DEFAULT" />
         </intent-filter>
     </activity>


    </application>

</manifest>

Upvotes: 0

Views: 552

Answers (1)

Anh Duy
Anh Duy

Reputation: 1183

Step by step to setup zxing 3.2.1 in eclipse

  1. Download zxing-master.zip from "https://github.com/zxing/zxing"
  2. Unzip zxing-master.zip, Use eclipse to import "android" project in zxing-master
  3. Download core-3.2.1.jar from "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  4. Create "libs" folder in "android" project and paste cor-3.2.1.jar into the libs folder
  5. Click on project: choose "properties" -> "Java Compiler" to change level to 1.7. Then click on "Android" change "Project build target" to android 4.4.2+, because using 1.7 requires compiling with Android 4.4
  6. If "CameraConfigurationUtils.java" don't exist in "zxing-master/android/app/src/main/java/com/google/zxing/client/android/camera/". You can copy it from "zxing-master/android-core/src/main/java/com/google/zxing/client/android/camera/" and paste to your project.
  7. Clean and build project. If your project show error about "switch - case", you should change them to "if - else".
  8. Completed. Clean and build project.
  9. Reference link: How to use Zxing in android

Upvotes: 1

Related Questions