1 package org.electrum.qr;
2 
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.util.Log;
6 import android.content.Intent;
7 import android.support.v4.app.ActivityCompat;
8 import android.Manifest;
9 import android.content.pm.PackageManager;
10 
11 import java.util.Arrays;
12 
13 import me.dm7.barcodescanner.zxing.ZXingScannerView;
14 
15 import com.google.zxing.Result;
16 import com.google.zxing.BarcodeFormat;
17 
18 public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
19     private static final int MY_PERMISSIONS_CAMERA = 1002;
20 
21     private ZXingScannerView mScannerView = null;
22     final String TAG = "org.electrum.SimpleScannerActivity";
23 
24     @Override
onResume()25     public void onResume() {
26         super.onResume();
27         if (this.hasPermission()) {
28             this.startCamera();
29         } else {
30             this.requestPermission();
31         }
32     }
33 
34     @Override
onPause()35     public void onPause() {
36         super.onPause();
37         if (null != mScannerView) {
38             mScannerView.stopCamera();           // Stop camera on pause
39         }
40     }
41 
startCamera()42     private void startCamera() {
43         mScannerView = new ZXingScannerView(this);   // Programmatically initialize the scanner view
44         mScannerView.setFormats(Arrays.asList(BarcodeFormat.QR_CODE));
45         setContentView(mScannerView);                // Set the scanner view as the content view
46         mScannerView.setResultHandler(this);         // Register ourselves as a handler for scan results.
47         mScannerView.startCamera();                  // Start camera on resume
48     }
49 
50     @Override
handleResult(Result rawResult)51     public void handleResult(Result rawResult) {
52         Intent resultIntent = new Intent();
53         resultIntent.putExtra("text", rawResult.getText());
54         resultIntent.putExtra("format", rawResult.getBarcodeFormat().toString());
55         setResult(Activity.RESULT_OK, resultIntent);
56         this.finish();
57     }
58 
hasPermission()59     private boolean hasPermission() {
60         return (ActivityCompat.checkSelfPermission(this,
61                                                    Manifest.permission.CAMERA)
62                 == PackageManager.PERMISSION_GRANTED);
63     }
64 
requestPermission()65     private void requestPermission() {
66         ActivityCompat.requestPermissions(this,
67                     new String[]{Manifest.permission.CAMERA},
68                     MY_PERMISSIONS_CAMERA);
69     }
70 
71     @Override
onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)72     public void onRequestPermissionsResult(int requestCode,
73             String permissions[], int[] grantResults) {
74         switch (requestCode) {
75             case MY_PERMISSIONS_CAMERA: {
76                 if (grantResults.length > 0
77                     && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
78                     // permission was granted, yay!
79                     this.startCamera();
80                 } else {
81                     // permission denied
82                     this.finish();
83                 }
84                 return;
85             }
86         }
87     }
88 
89 }
90