electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

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 }