Bundle QR scanner with Android app
This commit is contained in:
@@ -384,45 +384,22 @@ class ElectrumWindow(App):
|
||||
def scan_qr(self, on_complete):
|
||||
if platform != 'android':
|
||||
return
|
||||
from jnius import autoclass
|
||||
from jnius import autoclass, cast
|
||||
from android import activity
|
||||
PythonActivity = autoclass('org.kivy.android.PythonActivity')
|
||||
SimpleScannerActivity = autoclass("org.electrum.qr.SimpleScannerActivity")
|
||||
Intent = autoclass('android.content.Intent')
|
||||
intent = Intent("com.google.zxing.client.android.SCAN")
|
||||
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'))
|
||||
intent = Intent(PythonActivity.mActivity, SimpleScannerActivity)
|
||||
|
||||
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):
|
||||
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"))
|
||||
if resultCode == -1: # RESULT_OK:
|
||||
# this doesn't work due to some bug in jnius:
|
||||
# contents = intent.getStringExtra("text")
|
||||
String = autoclass("java.lang.String")
|
||||
contents = intent.getStringExtra(String("text"))
|
||||
on_complete(contents)
|
||||
activity.bind(on_activity_result=on_qr_result)
|
||||
integrator.initiateScan()
|
||||
PythonActivity.mActivity.startActivityForResult(intent, 0)
|
||||
|
||||
def do_share(self, data, title):
|
||||
if platform != 'android':
|
||||
|
||||
Reference in New Issue
Block a user