Browse Source
for QR code scanning with camera
1c10b1ce00/electrum/gui/kivy/data/java-classes/org/electrum/qr/SimpleScannerActivity.java
master
1 changed files with 90 additions and 0 deletions
@ -0,0 +1,90 @@ |
|||||||
|
package org.electrum.qr; |
||||||
|
|
||||||
|
import android.app.Activity; |
||||||
|
import android.os.Bundle; |
||||||
|
import android.util.Log; |
||||||
|
import android.content.Intent; |
||||||
|
import android.Manifest; |
||||||
|
import android.content.pm.PackageManager; |
||||||
|
|
||||||
|
import androidx.core.app.ActivityCompat; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
import me.dm7.barcodescanner.zxing.ZXingScannerView; |
||||||
|
|
||||||
|
import com.google.zxing.Result; |
||||||
|
import com.google.zxing.BarcodeFormat; |
||||||
|
|
||||||
|
public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler { |
||||||
|
private static final int MY_PERMISSIONS_CAMERA = 1002; |
||||||
|
|
||||||
|
private ZXingScannerView mScannerView = null; |
||||||
|
final String TAG = "org.electrum.SimpleScannerActivity"; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onResume() { |
||||||
|
super.onResume(); |
||||||
|
if (this.hasPermission()) { |
||||||
|
this.startCamera(); |
||||||
|
} else { |
||||||
|
this.requestPermission(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onPause() { |
||||||
|
super.onPause(); |
||||||
|
if (null != mScannerView) { |
||||||
|
mScannerView.stopCamera(); // Stop camera on pause
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void startCamera() { |
||||||
|
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
|
||||||
|
mScannerView.setFormats(Arrays.asList(BarcodeFormat.QR_CODE)); |
||||||
|
setContentView(mScannerView); // Set the scanner view as the content view
|
||||||
|
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
|
||||||
|
mScannerView.startCamera(); // Start camera on resume
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void handleResult(Result rawResult) { |
||||||
|
Intent resultIntent = new Intent(); |
||||||
|
resultIntent.putExtra("text", rawResult.getText()); |
||||||
|
resultIntent.putExtra("format", rawResult.getBarcodeFormat().toString()); |
||||||
|
setResult(Activity.RESULT_OK, resultIntent); |
||||||
|
this.finish(); |
||||||
|
} |
||||||
|
|
||||||
|
private boolean hasPermission() { |
||||||
|
return (ActivityCompat.checkSelfPermission(this, |
||||||
|
Manifest.permission.CAMERA) |
||||||
|
== PackageManager.PERMISSION_GRANTED); |
||||||
|
} |
||||||
|
|
||||||
|
private void requestPermission() { |
||||||
|
ActivityCompat.requestPermissions(this, |
||||||
|
new String[]{Manifest.permission.CAMERA}, |
||||||
|
MY_PERMISSIONS_CAMERA); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onRequestPermissionsResult(int requestCode, |
||||||
|
String permissions[], int[] grantResults) { |
||||||
|
switch (requestCode) { |
||||||
|
case MY_PERMISSIONS_CAMERA: { |
||||||
|
if (grantResults.length > 0 |
||||||
|
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) { |
||||||
|
// permission was granted, yay!
|
||||||
|
this.startCamera(); |
||||||
|
} else { |
||||||
|
// permission denied
|
||||||
|
this.finish(); |
||||||
|
} |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
Loading…
Reference in new issue