Android, How to read QR code in my application?

前端 未结 7 1974
耶瑟儿~
耶瑟儿~ 2020-11-29 16:11

In my application I need to read Qr code. I searched the net and found Zing codes however lots of developers had problem with using it and it seems it is buggy!

If i

7条回答
  •  [愿得一人]
    2020-11-29 16:29

    In android studio, You can use bellow process to create & Read QR Code &image look like bellw

    1. Create a android studio empty project
    2. Add library in app.gradle

      compile 'com.google.zxing:core:3.2.1'
      compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
      
    3. In activity.main xml use bellow..

       
       
      
      
      
      
      
      
      
    4. In MainActivity you can use bellow code

      public class MainActivity extends AppCompatActivity {
        ImageView imageView;
        Button button;
        Button btnScan;
        EditText editText;
        String EditTextValue ;
        Thread thread ;
        public final static int QRcodeWidth = 350 ;
        Bitmap bitmap ;
      
        TextView tv_qr_readTxt;
      
       @Override
       protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
          imageView = (ImageView)findViewById(R.id.imageView);
          editText = (EditText)findViewById(R.id.editText);
          button = (Button)findViewById(R.id.button);
          btnScan = (Button)findViewById(R.id.btnScan);
           tv_qr_readTxt = (TextView) findViewById(R.id.tv_qr_readTxt);
      
      button.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
      
      
      
              if(!editText.getText().toString().isEmpty()){
                  EditTextValue = editText.getText().toString();
      
                  try {
                      bitmap = TextToImageEncode(EditTextValue);
      
                      imageView.setImageBitmap(bitmap);
      
                  } catch (WriterException e) {
                      e.printStackTrace();
                  }
              }
              else{
                  editText.requestFocus();
                  Toast.makeText(MainActivity.this, "Please Enter Your Scanned Test" , Toast.LENGTH_LONG).show();
              }
      
            }
        });
      
      
      btnScan.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
      
              IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
              integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
              integrator.setPrompt("Scan");
              integrator.setCameraId(0);
              integrator.setBeepEnabled(false);
              integrator.setBarcodeImageEnabled(false);
              integrator.initiateScan();
      
           }
         });
          }
      
      
       Bitmap TextToImageEncode(String Value) throws WriterException {
         BitMatrix bitMatrix;
          try {
          bitMatrix = new MultiFormatWriter().encode(
                  Value,
                  BarcodeFormat.DATA_MATRIX.QR_CODE,
                  QRcodeWidth, QRcodeWidth, null
          );
      
          } catch (IllegalArgumentException Illegalargumentexception) {
      
           return null;
         }
        int bitMatrixWidth = bitMatrix.getWidth();
      
        int bitMatrixHeight = bitMatrix.getHeight();
      
        int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];
      
        for (int y = 0; y < bitMatrixHeight; y++) {
            int offset = y * bitMatrixWidth;
      
           for (int x = 0; x < bitMatrixWidth; x++) {
      
               pixels[offset + x] = bitMatrix.get(x, y) ?
                      getResources().getColor(R.color.QRCodeBlackColor):getResources().getColor(R.color.QRCodeWhiteColor);
            }
          }
          Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);
      
         bitmap.setPixels(pixels, 0, 350, 0, 0, bitMatrixWidth, bitMatrixHeight);
         return bitmap;
      }
      
      
      
      
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(result != null) {
          if(result.getContents() == null) {
              Log.e("Scan*******", "Cancelled scan");
      
           } else {
              Log.e("Scan", "Scanned");
      
              tv_qr_readTxt.setText(result.getContents());
              Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
           }
        } else {
            // This is important, otherwise the result will not be passed to the fragment
          super.onActivityResult(requestCode, resultCode, data);
           }
         }
       }
      
    5. You can download full source code from GitHub. GitHub link is : https://github.com/enamul95/QRCode

提交回复
热议问题