Commit 1ffd1326 authored by Max Lv's avatar Max Lv

Use internal scanner as fallback

parent 4ddebb7c
...@@ -51,6 +51,7 @@ libraryDependencies ++= ...@@ -51,6 +51,7 @@ libraryDependencies ++=
"com.twofortyfouram" % "android-plugin-api-for-locale" % "1.0.2" :: "com.twofortyfouram" % "android-plugin-api-for-locale" % "1.0.2" ::
"dnsjava" % "dnsjava" % "2.1.7" :: "dnsjava" % "dnsjava" % "2.1.7" ::
"eu.chainfire" % "libsuperuser" % "1.0.0.201608240809" :: "eu.chainfire" % "libsuperuser" % "1.0.0.201608240809" ::
"com.google.zxing" % "android-integration" % "3.2.1" ::
"me.dm7.barcodescanner" % "zxing" % "1.9" :: "me.dm7.barcodescanner" % "zxing" % "1.9" ::
"net.glxn.qrgen" % "android" % "2.0" :: "net.glxn.qrgen" % "android" % "2.0" ::
Nil Nil
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
package com.github.shadowsocks package com.github.shadowsocks
import android.app.TaskStackBuilder import android.app.TaskStackBuilder
import android.content.Intent
import android.content.pm.{PackageManager, ShortcutManager} import android.content.pm.{PackageManager, ShortcutManager}
import android.os.{Build, Bundle} import android.os.{Build, Bundle}
import android.support.v4.app.ActivityCompat import android.support.v4.app.ActivityCompat
...@@ -32,6 +33,7 @@ import android.widget.Toast ...@@ -32,6 +33,7 @@ import android.widget.Toast
import com.github.shadowsocks.ShadowsocksApplication.app import com.github.shadowsocks.ShadowsocksApplication.app
import com.github.shadowsocks.utils.Parser import com.github.shadowsocks.utils.Parser
import com.google.zxing.Result import com.google.zxing.Result
import com.google.zxing.integration.android.IntentIntegrator
import me.dm7.barcodescanner.zxing.ZXingScannerView import me.dm7.barcodescanner.zxing.ZXingScannerView
object ScannerActivity { object ScannerActivity {
...@@ -71,14 +73,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand ...@@ -71,14 +73,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand
override def onResume() { override def onResume() {
super.onResume() super.onResume()
val permissionCheck = ContextCompat.checkSelfPermission(this, val integrator = new IntentIntegrator(ScannerActivity.this)
android.Manifest.permission.CAMERA) val list = new java.util.ArrayList(IntentIntegrator.TARGET_ALL_KNOWN)
if (permissionCheck == PackageManager.PERMISSION_GRANTED) { list.add("tw.com.quickmark")
scannerView.setResultHandler(this) // Register ourselves as a handler for scan results. integrator.setTargetApplications(list)
scannerView.startCamera() // Start camera on resume val dialog = integrator.initiateScan()
} else { if (dialog != null) {
ActivityCompat.requestPermissions(this, val permissionCheck = ContextCompat.checkSelfPermission(this,
Array(android.Manifest.permission.CAMERA), MY_PERMISSIONS_REQUEST_CAMERA) android.Manifest.permission.CAMERA)
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
scannerView.setResultHandler(this) // Register ourselves as a handler for scan results.
scannerView.startCamera() // Start camera on resume
} else {
ActivityCompat.requestPermissions(this,
Array(android.Manifest.permission.CAMERA), MY_PERMISSIONS_REQUEST_CAMERA)
}
} }
} }
...@@ -87,6 +96,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand ...@@ -87,6 +96,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand
scannerView.stopCamera() // Stop camera on pause scannerView.stopCamera() // Stop camera on pause
} }
override def onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
val scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
if (scanResult != null) {
val contents = scanResult.getContents
if (!TextUtils.isEmpty(contents))
Parser.findAll(contents).foreach(app.profileManager.createProfile)
val intent = getParentActivityIntent
if (shouldUpRecreateTask(intent) || isTaskRoot)
TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
else finish()
} else {
super.onActivityResult(resultCode, resultCode, data)
}
}
override def handleResult(rawResult: Result) { override def handleResult(rawResult: Result) {
val uri = rawResult.getText val uri = rawResult.getText
if (!TextUtils.isEmpty(uri)) if (!TextUtils.isEmpty(uri))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment