Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Integrate ZXing QR code scanner without installing BarCode Scanner

I am trying to Integrate ZXing QR Code into my android app without installing BarCode Scanner app, I have followed the steps as:

1) Firstly I have downloaded ZXing.zip file and extract it

2)open the ZXing project as an android existing project and then go to android folder and open the android folder and also include core.jar file into the ZXing project named CaptureActivity.

3)I have used the CaptureActivity project as a library in my project named 'QRCodeSample'. (Problem in including CaptureActivity as a library)

4)My code is as below3:

   public class QRCodeSampleActivity extends Activity { Button b1; static String contents;  public static final int REQUEST_CODE = 1;  /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     b1 = (Button) findViewById(R.id.button1);     b1.setOnClickListener(new OnClickListener() {          @Override         public void onClick(View arg0) {             // TODO Auto-generated method stub             /*Intent intent = new Intent("com.google.zxing.client.android.SCAN");             intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE",                     "QR_CODE_MODE");             startActivityForResult(intent, 0);*/             Intent intent = new Intent("com.google.zxing.client.android.SCAN");             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) {             contents = intent.getStringExtra("SCAN_RESULT");             String format = intent.getStringExtra("SCAN_RESULT_FORMAT");             Log.i("Barcode Result", contents);             Intent i1 = new Intent(QRCodeSampleActivity.this, webclass.class);             startActivity(i1);             // Handle successful scan         } else if (resultCode == RESULT_CANCELED) {             // Handle cancel             Log.i("Barcode Result","Result canceled");         }     } }   } 

The manifest file is :

<uses-permission android:name="android.permission.CAMERA"/>  <application     android:icon="@drawable/ic_launcher"     android:label="@string/app_name" >       <activity android:name="com.google.zxing.client.android.CaptureActivity"            android:screenOrientation="landscape"            android:configChanges="orientation|keyboardHidden"            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"            android:windowSoftInputMode="stateAlwaysHidden">            <intent-filter>               <action android:name="android.intent.action.MAIN"/>               <category android:name="android.intent.category.DEFAULT"/>            </intent-filter>            <intent-filter>               <action android:name="com.google.zxing.client.android.SCAN"/>               <category android:name="android.intent.category.DEFAULT"/>             </intent-filter>       </activity>     <activity         android:label="@string/app_name"         android:name=".QRCodeSampleActivity" >        <intent-filter >             <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>      </activity>       <activity  android:name=".webclass"></activity>  </application>  </manifest> 

and its not adding library also

LibraryInformation

When I am trying to run my project,the error msg is:

Unable to instantiate activity ComponentInfo{com.qr.code/com.qr.code}: java.lang.ClassNotFoundException: com.qr.code in loader dalvik.system.PathClassLoader[/data/app/com.qr.code-1.apk]

like image 792
Kanika Avatar asked Dec 01 '11 11:12

Kanika


People also ask

How do I scan a QR code without a scanner app?

Google Screen Search: Google Screen Search allows consumers to scan QR Codes without an app instantly. All one has to do is point their camera at the QR Code, long-press the Home button and click on 'What's on my screen? ' The QR Code link will be available for consumers to open.

Can you use a QR code without scanning it?

How to skip QR scanning. If your phone can't scan the QR code, you can manually type in the key or serial number. Tap Continue without scanning at the bottom of the QR code scanning screen.

Can ZXing scan QR code?

On click of button_scan_qr_code , CaptureActivity will start scanning using default camera. Once it scans any QR code, it sends back the result to onActivityResult the MainActivity . ZXing also provides online QR Code Generator. Enter the required fields, generate and scan it to get the results.


2 Answers

Finally I got the answer,

As of ADT 14,the resource fields(such as R.id.decode) are no longer constants when defined in library projects

So in the ZXing library->android->com.google.zxing.client.android.CaptureActivityHandler.java and DecodeHandler.java

Replace both of these classes switch case statements with if-else,and then import this ZXing library into your project..

Rest of the coding of my own project is same...just the problem with the library classes as these are not updated as according to ADT 14..

Kanika

like image 198
Kanika Avatar answered Sep 20 '22 01:09

Kanika


For all those Android Studio/Gradle users out there

Okay guys, as my task today was to integrate ZXING into an Android application and there were no good sources for input all over, I will give you a hint what made my be successful - cause it turned out to be very easy (on version 2.*).

There is a real handy git repository that provides the zxing android library project as an AAR archive.

  • https://github.com/embarkmobile/zxing-android-minimal

All you have to do is add this to your build.gradle

repositories {     mavenCentral()      maven {         url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"     } }  dependencies {     compile 'com.google.zxing:core:2.2'     compile 'com.embarkmobile:zxing-android-minimal:1.2.1@aar' } 

and Gradle does all the magic to compile the code and makes it accessible in your app.

To start the Scanner afterwards, use this class/method:

IntentIntegrator.initiateScan(this);    // `this` is the current Activity 

If you already visited the link you gonna see that i just copy&pasted the code from there the git readme. If not go there to get some more insight and code examples!

Hope to be helpful for future readers. Peace :)

like image 31
Langusten Gustel Avatar answered Sep 21 '22 01:09

Langusten Gustel