# SimpleZXing **Repository Path**: Wanglihao_Android/SimpleZXing ## Basic Information - **Project Name**: SimpleZXing - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-09-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SimpleZXing A simple and easy to use 1D/2D barcode scanner library on Android. This library is a simplified and improved version of offical [ZXing Android APP(Barcode Scanner)](https://github.com/zxing/zxing). ## How to use *如果你是中文读者,请参考[Android二维码扫描的简单实现及源码分析](http://guojinyu.github.io/2016/12/07/Android二维码扫描的简单实现及源码分析/)* In most cases, this library can be easily used by just two steps: * 1. add dependencies ```gradle compile 'com.acker:simplezxing:1.5' ``` * 2. invoke it ```java startActivityForResult(new Intent(YourActivity.this, CaptureActivity.class), CaptureActivity.REQ_CODE) ``` And if succeeded, it will return a string which the 1D/2D barcode code means. ## Function supported * Supported formats type: same with the ZXing library. * Supported camera settings: Beep or not(default yes), Vibrate or not(default yes), Expose or not(default no), Flashlight mode: on/off/auto(default off), Screen Orientation mode: portrait/landscape/auto rotate(default portrait). ## Typical use * For example: MainActivity.java in demo. * Notice: Because of camera use, you should handle the dynamic permission management on Android 6.0 properly just like below. ```java package com.acker.simplezxing.demo; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.annotation.NonNull; 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.TextView; import android.widget.Toast; import com.acker.simplezxing.activity.CaptureActivity; public class MainActivity extends AppCompatActivity { private static final int REQ_CODE_PERMISSION = 0x1111; private TextView tvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvResult = (TextView) findViewById(R.id.tv_result); Button btn = (Button) findViewById(R.id.btn_sm); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Open Scan Activity if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // Do not have the permission of camera, request it. ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, REQ_CODE_PERMISSION); } else { // Have gotten the permission startCaptureActivityForResult(); } } }); } private void startCaptureActivityForResult() { Intent intent = new Intent(MainActivity.this, CaptureActivity.class); Bundle bundle = new Bundle(); bundle.putBoolean(CaptureActivity.KEY_NEED_BEEP, CaptureActivity.VALUE_BEEP); bundle.putBoolean(CaptureActivity.KEY_NEED_VIBRATION, CaptureActivity.VALUE_VIBRATION); bundle.putBoolean(CaptureActivity.KEY_NEED_EXPOSURE, CaptureActivity.VALUE_NO_EXPOSURE); bundle.putByte(CaptureActivity.KEY_FLASHLIGHT_MODE, CaptureActivity.VALUE_FLASHLIGHT_OFF); bundle.putByte(CaptureActivity.KEY_ORIENTATION_MODE, CaptureActivity.VALUE_ORIENTATION_AUTO); bundle.putBoolean(CaptureActivity.KEY_SCAN_AREA_FULL_SCREEN, CaptureActivity.VALUE_SCAN_AREA_FULL_SCREEN); bundle.putBoolean(CaptureActivity.KEY_NEED_SCAN_HINT_TEXT, CaptureActivity.VALUE_SCAN_HINT_TEXT); intent.putExtra(CaptureActivity.EXTRA_SETTING_BUNDLE, bundle); startActivityForResult(intent, CaptureActivity.REQ_CODE); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case REQ_CODE_PERMISSION: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // User agree the permission startCaptureActivityForResult(); } else { // User disagree the permission Toast.makeText(this, "You must agree the camera permission request before you use the code scan function", Toast.LENGTH_LONG).show(); } } break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case CaptureActivity.REQ_CODE: switch (resultCode) { case RESULT_OK: tvResult.setText(data.getStringExtra(CaptureActivity.EXTRA_SCAN_RESULT)); //or do sth break; case RESULT_CANCELED: if (data != null) { // for some reason camera is not working correctly tvResult.setText(data.getStringExtra(CaptureActivity.EXTRA_SCAN_RESULT)); } break; } break; } } } ``` ## Effect ![Scanner UI](http://obc3atr48.bkt.clouddn.com/WechatIMG22.jpeg)