mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-27 15:31:31 +00:00
Merge pull request #3624 from bauerj/zxing-integration
Bundle QR scanner with Android app
This commit is contained in:
commit
a95534bb0c
3 changed files with 65 additions and 35 deletions
|
@ -0,0 +1,48 @@
|
||||||
|
package org.electrum.qr;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
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 ZXingScannerView mScannerView;
|
||||||
|
final String TAG = "org.electrum.SimpleScannerActivity";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle state) {
|
||||||
|
super.onCreate(state);
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
|
||||||
|
mScannerView.startCamera(); // Start camera on resume
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
mScannerView.stopCamera(); // Stop camera on pause
|
||||||
|
}
|
||||||
|
|
||||||
|
@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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -384,45 +384,22 @@ class ElectrumWindow(App):
|
||||||
def scan_qr(self, on_complete):
|
def scan_qr(self, on_complete):
|
||||||
if platform != 'android':
|
if platform != 'android':
|
||||||
return
|
return
|
||||||
from jnius import autoclass
|
from jnius import autoclass, cast
|
||||||
from android import activity
|
from android import activity
|
||||||
PythonActivity = autoclass('org.kivy.android.PythonActivity')
|
PythonActivity = autoclass('org.kivy.android.PythonActivity')
|
||||||
|
SimpleScannerActivity = autoclass("org.electrum.qr.SimpleScannerActivity")
|
||||||
Intent = autoclass('android.content.Intent')
|
Intent = autoclass('android.content.Intent')
|
||||||
intent = Intent("com.google.zxing.client.android.SCAN")
|
intent = Intent(PythonActivity.mActivity, SimpleScannerActivity)
|
||||||
intent.putExtra("SCAN_MODE", "QR_CODE_MODE")
|
|
||||||
def on_qr_result(requestCode, resultCode, intent):
|
|
||||||
if requestCode == 0:
|
|
||||||
if resultCode == -1: # RESULT_OK:
|
|
||||||
contents = intent.getStringExtra("SCAN_RESULT")
|
|
||||||
if intent.getStringExtra("SCAN_RESULT_FORMAT") == 'QR_CODE':
|
|
||||||
on_complete(contents)
|
|
||||||
else:
|
|
||||||
self.show_error("wrong format " + intent.getStringExtra("SCAN_RESULT_FORMAT"))
|
|
||||||
activity.bind(on_activity_result=on_qr_result)
|
|
||||||
try:
|
|
||||||
PythonActivity.mActivity.startActivityForResult(intent, 0)
|
|
||||||
except:
|
|
||||||
self.show_error(_('Could not start Barcode Scanner.') + ' ' + _('Please install the Barcode Scanner app from ZXing'))
|
|
||||||
|
|
||||||
def scan_qr_zxing(self, on_complete):
|
|
||||||
# uses zxing embedded lib
|
|
||||||
if platform != 'android':
|
|
||||||
return
|
|
||||||
from jnius import autoclass
|
|
||||||
from android import activity
|
|
||||||
PythonActivity = autoclass('org.kivy.android.PythonActivity')
|
|
||||||
IntentIntegrator = autoclass('com.google.zxing.integration.android.IntentIntegrator')
|
|
||||||
integrator = IntentIntegrator(PythonActivity.mActivity)
|
|
||||||
def on_qr_result(requestCode, resultCode, intent):
|
def on_qr_result(requestCode, resultCode, intent):
|
||||||
if requestCode == 0:
|
if resultCode == -1: # RESULT_OK:
|
||||||
if resultCode == -1: # RESULT_OK:
|
# this doesn't work due to some bug in jnius:
|
||||||
contents = intent.getStringExtra("SCAN_RESULT")
|
# contents = intent.getStringExtra("text")
|
||||||
if intent.getStringExtra("SCAN_RESULT_FORMAT") == 'QR_CODE':
|
String = autoclass("java.lang.String")
|
||||||
on_complete(contents)
|
contents = intent.getStringExtra(String("text"))
|
||||||
else:
|
on_complete(contents)
|
||||||
self.show_error("wrong format " + intent.getStringExtra("SCAN_RESULT_FORMAT"))
|
|
||||||
activity.bind(on_activity_result=on_qr_result)
|
activity.bind(on_activity_result=on_qr_result)
|
||||||
integrator.initiateScan()
|
PythonActivity.mActivity.startActivityForResult(intent, 0)
|
||||||
|
|
||||||
def do_share(self, data, title):
|
def do_share(self, data, title):
|
||||||
if platform != 'android':
|
if platform != 'android':
|
||||||
|
|
|
@ -52,7 +52,8 @@ fullscreen = False
|
||||||
#
|
#
|
||||||
|
|
||||||
# (list) Permissions
|
# (list) Permissions
|
||||||
android.permissions = INTERNET, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE
|
android.permissions = INTERNET, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE, CAMERA
|
||||||
|
|
||||||
# (int) Android API to use
|
# (int) Android API to use
|
||||||
#android.api = 14
|
#android.api = 14
|
||||||
|
|
||||||
|
@ -86,7 +87,11 @@ android.ndk_path = /opt/crystax-ndk-10.3.2
|
||||||
|
|
||||||
# (list) List of Java files to add to the android project (can be java or a
|
# (list) List of Java files to add to the android project (can be java or a
|
||||||
# directory containing the files)
|
# directory containing the files)
|
||||||
#android.add_src =
|
android.add_src = gui/kivy/data/java-classes/
|
||||||
|
|
||||||
|
android.gradle_dependencies = me.dm7.barcodescanner:zxing:1.9.8
|
||||||
|
|
||||||
|
android.add_activities = org.electrum.qr.SimpleScannerActivity
|
||||||
|
|
||||||
# (str) python-for-android branch to use, if not master, useful to try
|
# (str) python-for-android branch to use, if not master, useful to try
|
||||||
# not yet merged features.
|
# not yet merged features.
|
||||||
|
|
Loading…
Add table
Reference in a new issue