Step: 1
======
Credits to author of the Library.
https://github.com/dm77/barcodescanner
Add library to your build.gradle file under app folder
compile 'me.dm7.barcodescanner:zxing:1.9'
Step: 2
======
MainActivity.java
==================
package com.pratap.scanbarcode; import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { EditText txt_barcodevalue; Button btn_scan; final int REQUEST_CAMERA_PERMISSION = 1001; final int DELAY_TIME = 4000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txt_barcodevalue = (EditText) findViewById(R.id.txt_barcodevalue); btn_scan = (Button) findViewById(R.id.btn_scan); btn_scan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { checkCameraPermissions(); } }); } public void openBarCodeScanner() { Intent scanIntent = new Intent(this, BarCodeScannerActivity.class); startActivityForResult(scanIntent, 1006); } public void checkCameraPermissions() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { openBarCodeScanner(); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CAMERA_PERMISSION) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted openBarCodeScanner(); } else { // permission denied, boo! showMessage("Camera Permission Denied!!!"); } } } public void showMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1006) { if (resultCode == Activity.RESULT_OK && data != null) { String barcodeNumber = data.getStringExtra("BarCodeNumber"); txt_barcodevalue.setText(barcodeNumber); } } } }
XML Layout file for Main Activity
=========================
activity_main.xml
=============
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:layout_margin="16dp" android:orientation="horizontal"> <EditText android:id="@+id/txt_barcodevalue" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="text" /> <Button android:id="@+id/btn_scan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Scan" /> </LinearLayout> </RelativeLayout>
Step: 3
======
BarCodeScannerActivity.java
=====================
Please add this Activity to your AndroidManifest file.
package com.pratap.scanbarcode; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.google.zxing.Result; import me.dm7.barcodescanner.zxing.ZXingScannerView; public class BarCodeScannerActivity extends Activity implements ZXingScannerView.ResultHandler { private ZXingScannerView mScannerView; @Override public void onCreate(Bundle state) { super.onCreate(state); mScannerView = new ZXingScannerView(this); setContentView(mScannerView); } @Override public void onResume() { super.onResume(); mScannerView.setResultHandler(this); mScannerView.startCamera(); } @Override public void onPause() { super.onPause(); mScannerView.stopCamera(); } @Override public void handleResult(Result rawResult) { // Do something with the result here Log.v("Scan Result", rawResult.getText()); // Prints scan results Log.v("Scan Qr code format", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.) Toast.makeText(BarCodeScannerActivity.this, rawResult.getText(), Toast.LENGTH_SHORT).show(); // If you would like to resume scanning, call this method below: // mScannerView.resumeCameraPreview(this); Intent intentMessage = new Intent(); // put the message in Intent intentMessage.putExtra("BarCodeNumber", rawResult.getText()); // Set The Result in Intent setResult(RESULT_OK, intentMessage); // finish The activity finish(); } }
Step: 4
======
AndroidManifest.xml
===================
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pratap.scanbarcode"> <uses-permission android:name="android.permission.CAMERA" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".BarCodeScannerActivity" android:screenOrientation="portrait"> </activity> </application> </manifest>
Demo
======
References
========
Credits to author of the Library.
https://github.com/dm77/barcodescanner
No comments:
Post a Comment