Guest User

Untitled

a guest
Jan 16th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.16 KB | None | 0 0
  1. I/CameraFramework: handleMessage: 16
  2.  
  3. package fr.cityfid.cityfidtablet;
  4.  
  5. import android.Manifest;
  6. import android.content.Intent;
  7. import android.content.pm.PackageManager;
  8. import android.graphics.Point;
  9. import android.os.Bundle;
  10. import android.os.Handler;
  11. import android.support.annotation.NonNull;
  12. import android.support.design.widget.CoordinatorLayout;
  13. import android.support.design.widget.Snackbar;
  14. import android.support.v4.app.ActivityCompat;
  15. import android.support.v4.content.ContextCompat;
  16. import android.support.v7.app.AppCompatActivity;
  17. import android.util.Log;
  18. import android.util.SparseArray;
  19. import android.view.Display;
  20. import android.view.SurfaceHolder;
  21. import android.view.SurfaceView;
  22.  
  23. import com.google.android.gms.vision.CameraSource;
  24. import com.google.android.gms.vision.Detector;
  25. import com.google.android.gms.vision.barcode.Barcode;
  26. import com.google.android.gms.vision.barcode.BarcodeDetector;
  27.  
  28. import java.io.IOException;
  29.  
  30. import butterknife.BindView;
  31. import butterknife.ButterKnife;
  32.  
  33. public class ScanActivity extends AppCompatActivity {
  34.  
  35. @BindView(R.id.scan_coordinator)
  36. CoordinatorLayout coordinatorLayout;
  37. @BindView(R.id.camera_view)
  38. SurfaceView cameraView;
  39.  
  40. private BarcodeDetector barcodeDetector;
  41. private CameraSource cameraSource;
  42. private String lastDetectedCode;
  43.  
  44. @Override
  45. protected void onCreate(Bundle savedInstanceState) {
  46. super.onCreate(savedInstanceState);
  47. setContentView(R.layout.activity_scan);
  48. ButterKnife.bind(this);
  49.  
  50. //instanciate barcode detecor
  51. barcodeDetector = new BarcodeDetector.Builder(this)
  52. .setBarcodeFormats(Barcode.QR_CODE | Barcode.DATA_MATRIX)
  53. .build();
  54. barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
  55. @Override
  56. public void release() {
  57. Log.d("DETECTOR", "Detector processor released");
  58. }
  59.  
  60. @Override
  61. public void receiveDetections(Detector.Detections<Barcode> detections) {
  62. final SparseArray<Barcode> barcodes = detections.getDetectedItems();
  63.  
  64. if (barcodes.size() != 0){
  65. lastDetectedCode = barcodes.valueAt(0).displayValue;
  66.  
  67. Intent intent = new Intent(ScanActivity.this, ScanResultActivity.class);
  68. intent.putExtra("QRCODE", lastDetectedCode);
  69. startActivity(intent);
  70.  
  71. cameraSource.stop();
  72. cameraSource.release();
  73. barcodeDetector.release();
  74.  
  75. finish();
  76.  
  77. return;
  78. }
  79. }
  80. });
  81.  
  82. //instanciating camera source
  83. Display display = getWindowManager().getDefaultDisplay();
  84. Point size = new Point();
  85. display.getSize(size);
  86. cameraSource = new CameraSource.Builder(this, barcodeDetector)
  87. .setFacing(CameraSource.CAMERA_FACING_FRONT)
  88. .setAutoFocusEnabled(true)
  89. .setRequestedFps(1.0f)
  90. .build();
  91.  
  92. //binding camera view
  93. cameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
  94. @Override
  95. public void surfaceCreated(SurfaceHolder holder) {
  96. startCamera(holder);
  97. }
  98.  
  99. @Override
  100. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
  101.  
  102. }
  103.  
  104. @Override
  105. public void surfaceDestroyed(SurfaceHolder holder) {
  106.  
  107. }
  108. });
  109.  
  110. //wait before closing activity
  111. new Handler().postDelayed(new Runnable() {
  112. @Override
  113. public void run() {
  114. finish();
  115. }
  116. }, 15000);
  117. }
  118.  
  119. /**
  120. * This method starts the camera and attach it to the SurfaceHolder
  121. * @param holder SurfaceHolder
  122. */
  123. private void startCamera(SurfaceHolder holder){
  124. try {
  125. if (ContextCompat.checkSelfPermission(ScanActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
  126. Snackbar.make(coordinatorLayout, R.string.waiting_camera_permission, Snackbar.LENGTH_LONG).show();
  127. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 9001);
  128. } else {
  129. cameraSource.start(holder);
  130. Snackbar.make(coordinatorLayout, R.string.present_qr, Snackbar.LENGTH_INDEFINITE).show();
  131. }
  132. } catch (IOException e){
  133. Log.e("CAMERA_ERR", e.getMessage());
  134. Snackbar.make(coordinatorLayout, R.string.camera_io_error, Snackbar.LENGTH_LONG).show();
  135. }
  136. }
  137.  
  138. @Override
  139. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  140. switch (requestCode){
  141. case 9001:
  142. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
  143. startCamera(cameraView.getHolder());
  144. }
  145. break;
  146. }
  147. }
  148.  
  149. @Override
  150. protected void onDestroy() {
  151. super.onDestroy();
  152. cameraSource.release();
  153. barcodeDetector.release();
  154. }
  155. }
Add Comment
Please, Sign In to add comment