SimpleScannerActivity.java (2929B)
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 25 public void onResume() { 26 super.onResume(); 27 if (this.hasPermission()) { 28 this.startCamera(); 29 } else { 30 this.requestPermission(); 31 } 32 } 33 34 @Override 35 public void onPause() { 36 super.onPause(); 37 if (null != mScannerView) { 38 mScannerView.stopCamera(); // Stop camera on pause 39 } 40 } 41 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 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 59 private boolean hasPermission() { 60 return (ActivityCompat.checkSelfPermission(this, 61 Manifest.permission.CAMERA) 62 == PackageManager.PERMISSION_GRANTED); 63 } 64 65 private void requestPermission() { 66 ActivityCompat.requestPermissions(this, 67 new String[]{Manifest.permission.CAMERA}, 68 MY_PERMISSIONS_CAMERA); 69 } 70 71 @Override 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 }