summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/custom/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java16
-rw-r--r--app/src/main/AndroidManifest.xml5
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java40
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/helpers/AbstractQrScannerHelper.java16
-rw-r--r--app/src/normal/AndroidManifest.xml6
-rw-r--r--app/src/normal/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java39
6 files changed, 93 insertions, 29 deletions
diff --git a/app/src/custom/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java b/app/src/custom/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java
new file mode 100644
index 00000000..8483549a
--- /dev/null
+++ b/app/src/custom/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java
@@ -0,0 +1,16 @@
+package se.leap.bitmaskclient.providersetup.helpers;
+
+import androidx.fragment.app.Fragment;
+
+import se.leap.bitmaskclient.providersetup.fragments.helpers.AbstractQrScannerHelper;
+
+public class QrScannerHelper extends AbstractQrScannerHelper {
+
+ public QrScannerHelper(Fragment fragment, ScanResultCallback callback) {
+ super(fragment, callback);
+ }
+
+ @Override
+ public void startScan() {
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6759862e..254f38d6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,10 +20,7 @@
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" /> <!-- Used to show all apps in the allowed Apps selection -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
- <uses-feature
- android:name="android.hardware.camera"
- android:required="false" />
- <uses-permission android:name="android.permission.CAMERA"/>
+
<application
android:name=".base.BitmaskApp"
android:allowBackup="false"
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java
index c4b3cd02..f3da117b 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java
@@ -12,14 +12,10 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
-import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModelProvider;
-import com.journeyapps.barcodescanner.ScanContract;
-import com.journeyapps.barcodescanner.ScanOptions;
-
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
@@ -29,17 +25,18 @@ import se.leap.bitmaskclient.base.models.Provider;
import se.leap.bitmaskclient.base.utils.ViewHelper;
import se.leap.bitmaskclient.databinding.FProviderSelectionBinding;
import se.leap.bitmaskclient.providersetup.activities.CancelCallback;
+import se.leap.bitmaskclient.providersetup.fragments.helpers.AbstractQrScannerHelper;
+import se.leap.bitmaskclient.providersetup.helpers.QrScannerHelper;
import se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModel;
import se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModelFactory;
-public class ProviderSelectionFragment extends BaseSetupFragment implements CancelCallback {
-
- private ActivityResultLauncher<ScanOptions> scannerActivityResultLauncher;
+public class ProviderSelectionFragment extends BaseSetupFragment implements CancelCallback, AbstractQrScannerHelper.ScanResultCallback {
private ProviderSelectionViewModel viewModel;
private ArrayList<RadioButton> radioButtons;
private FProviderSelectionBinding binding;
+ private QrScannerHelper qrScannerHelper;
public static ProviderSelectionFragment newInstance(int position) {
ProviderSelectionFragment fragment = new ProviderSelectionFragment();
@@ -56,17 +53,7 @@ public class ProviderSelectionFragment extends BaseSetupFragment implements Canc
getContext().getApplicationContext().getAssets())).
get(ProviderSelectionViewModel.class);
- scannerActivityResultLauncher = registerForActivityResult(new ScanContract(), result -> {
- if(result.getContents() != null) {
- try {
- Introducer introducer = Introducer.fromUrl(result.getContents());
- binding.editCustomProvider.setText(introducer.toUrl());
- } catch (Exception e) {
- e.printStackTrace();
- //binding.editCustomProvider.setText(result.getContents());
- }
- }
- });
+ qrScannerHelper = new QrScannerHelper(this, this);
}
@Override
@@ -112,13 +99,7 @@ public class ProviderSelectionFragment extends BaseSetupFragment implements Canc
}
private void initQrScanner() {
- binding.btnQrScanner.setOnClickListener(v -> {
- ScanOptions options = new ScanOptions();
- options.setBeepEnabled(false);
- options.setBarcodeImageEnabled(false);
- options.setOrientationLocked(false);
- scannerActivityResultLauncher.launch(options);
- });
+ binding.btnQrScanner.setOnClickListener(v -> qrScannerHelper.startScan());
}
@@ -241,4 +222,13 @@ public class ProviderSelectionFragment extends BaseSetupFragment implements Canc
public void onCanceled() {
binding.providerRadioGroup.check(0);
}
+
+ @Override
+ public void onScanResult(Introducer introducer) {
+ try {
+ binding.editCustomProvider.setText(introducer.toUrl());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/helpers/AbstractQrScannerHelper.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/helpers/AbstractQrScannerHelper.java
new file mode 100644
index 00000000..132d8cc9
--- /dev/null
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/helpers/AbstractQrScannerHelper.java
@@ -0,0 +1,16 @@
+package se.leap.bitmaskclient.providersetup.fragments.helpers;
+
+import androidx.fragment.app.Fragment;
+
+import se.leap.bitmaskclient.base.models.Introducer;
+
+public abstract class AbstractQrScannerHelper {
+ public interface ScanResultCallback {
+ void onScanResult(Introducer introducer);
+ }
+
+ public AbstractQrScannerHelper(Fragment fragment, ScanResultCallback callback) {
+ }
+
+ public abstract void startScan();
+}
diff --git a/app/src/normal/AndroidManifest.xml b/app/src/normal/AndroidManifest.xml
new file mode 100644
index 00000000..3987d95d
--- /dev/null
+++ b/app/src/normal/AndroidManifest.xml
@@ -0,0 +1,6 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+ <uses-feature
+ android:name="android.hardware.camera"
+ android:required="false" />
+ <uses-permission android:name="android.permission.CAMERA"/>
+</manifest> \ No newline at end of file
diff --git a/app/src/normal/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java b/app/src/normal/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java
new file mode 100644
index 00000000..88046360
--- /dev/null
+++ b/app/src/normal/java/se/leap/bitmaskclient/providersetup/helpers/QrScannerHelper.java
@@ -0,0 +1,39 @@
+package se.leap.bitmaskclient.providersetup.helpers;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.fragment.app.Fragment;
+
+import com.journeyapps.barcodescanner.ScanContract;
+import com.journeyapps.barcodescanner.ScanOptions;
+
+import se.leap.bitmaskclient.base.models.Introducer;
+import se.leap.bitmaskclient.providersetup.fragments.helpers.AbstractQrScannerHelper;
+
+public class QrScannerHelper extends AbstractQrScannerHelper {
+
+ private final ActivityResultLauncher<ScanOptions> scannerActivityResultLauncher;
+
+ public QrScannerHelper(Fragment fragment, ScanResultCallback callback) {
+ super(fragment, callback);
+ this.scannerActivityResultLauncher = fragment.registerForActivityResult(new ScanContract(), result -> {
+ if(result.getContents() != null) {
+ try {
+ Introducer introducer = Introducer.fromUrl(result.getContents());
+ callback.onScanResult(introducer);
+ } catch (Exception e) {
+ e.printStackTrace();
+ //binding.editCustomProvider.setText(result.getContents());
+ }
+ }
+ });
+ }
+
+ @Override
+ public void startScan() {
+ ScanOptions options = new ScanOptions();
+ options.setBeepEnabled(false);
+ options.setBarcodeImageEnabled(false);
+ options.setOrientationLocked(false);
+ scannerActivityResultLauncher.launch(options);
+ }
+}