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