diff options
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); + } +} |