Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. package com.example.aminer.qrcode;
  2.  
  3. import android.Manifest;
  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.content.pm.PackageManager;
  7. import android.os.Bundle;
  8. import android.support.annotation.Nullable;
  9. import android.support.v4.app.ActivityCompat;
  10. import android.support.v4.content.ContextCompat;
  11. import android.util.DisplayMetrics;
  12. import android.util.SparseArray;
  13. import android.view.SurfaceHolder;
  14. import android.view.SurfaceView;
  15. import android.view.View;
  16. import android.view.ViewGroup;
  17. import android.view.ViewTreeObserver;
  18. import android.widget.Toast;
  19.  
  20. import com.example.aminer.qrcode.views.BoxDetector;
  21. import com.google.android.gms.common.api.CommonStatusCodes;
  22. import com.google.android.gms.vision.CameraSource;
  23. import com.google.android.gms.vision.Detector;
  24. import com.google.android.gms.vision.barcode.Barcode;
  25. import com.google.android.gms.vision.barcode.BarcodeDetector;
  26.  
  27. import java.io.IOException;
  28.  
  29. /**
  30. * Created by aminer on 18/01/16.
  31. */
  32.  
  33. public class ScanBarcodeActivity extends Activity {
  34. public final static int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 2001;
  35. private boolean dothecam = true;
  36. SurfaceView cameraPreview;
  37.  
  38. @Override
  39. public void onRequestPermissionsResult(int requestCode,
  40. String permissions[], int[] grantResults) {
  41. switch (requestCode) {
  42. case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
  43. if (grantResults.length > 0
  44. && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  45. dothecam = true;
  46. } else {
  47. dothecam = false;
  48. }
  49. return;
  50. }
  51. }
  52. }
  53. View scanBorder;
  54. @Override
  55. protected void onCreate(@Nullable Bundle savedInstanceState) {
  56. super.onCreate(savedInstanceState);
  57.  
  58. setContentView(R.layout.activity_scan_barcode);
  59.  
  60. cameraPreview = (SurfaceView) findViewById(R.id.camera_preview);
  61. scanBorder = findViewById(R.id.scanBorder);
  62. createCameraSource();
  63. }
  64.  
  65. @Override
  66. protected void onResume() {
  67. super.onResume();
  68.  
  69. Toast.makeText(ScanBarcodeActivity.this, scanBorder.getLayoutParams().width+"", Toast.LENGTH_SHORT).show();
  70. }
  71.  
  72. private void createCameraSource() {
  73. DisplayMetrics metrics = new DisplayMetrics();
  74. getWindowManager().getDefaultDisplay().getMetrics(metrics);
  75. BarcodeDetector detector_1 = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.QR_CODE).build();
  76. BoxDetector detector = new BoxDetector(detector_1,metrics.widthPixels*3/5,metrics.widthPixels*3/5);
  77. final CameraSource cameraSource = new CameraSource.Builder(this, detector)
  78. .setAutoFocusEnabled(true)
  79. .setRequestedPreviewSize(2018, 2048)
  80. .build();
  81. cameraPreview.getHolder().addCallback(new SurfaceHolder.Callback() {
  82. @Override
  83. public void surfaceCreated(SurfaceHolder holder) {
  84. try {
  85. if (ActivityCompat.checkSelfPermission(ScanBarcodeActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
  86. if (ActivityCompat.shouldShowRequestPermissionRationale(ScanBarcodeActivity.this,
  87. Manifest.permission.CAMERA)) {
  88.  
  89.  
  90. } else {
  91.  
  92. ActivityCompat.requestPermissions(ScanBarcodeActivity.this,
  93. new String[]{Manifest.permission.CAMERA},
  94. MY_PERMISSIONS_REQUEST_READ_CONTACTS);
  95. }
  96. }
  97. if(!dothecam)
  98. return;
  99. cameraSource.start(cameraPreview.getHolder());
  100. } catch (IOException e) {
  101. e.printStackTrace();
  102. }
  103. }
  104.  
  105. @Override
  106. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
  107.  
  108. }
  109.  
  110. @Override
  111. public void surfaceDestroyed(SurfaceHolder holder) {
  112. cameraSource.stop();
  113. }
  114. });
  115.  
  116. detector.setProcessor(new Detector.Processor<Barcode>() {
  117. @Override
  118. public void release() {
  119.  
  120. }
  121.  
  122. @Override
  123. public void receiveDetections(Detector.Detections<Barcode> detections) {
  124. final SparseArray<Barcode> barcodes = detections.getDetectedItems();
  125. if(barcodes.size()>0){
  126. Intent intent = new Intent();
  127. intent.putExtra("barcode",barcodes.valueAt(0));
  128. setResult(CommonStatusCodes.SUCCESS,intent);
  129. finish();
  130. }
  131. }
  132. });
  133. }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement