From 1df58041a291d451438f67366c7c1605f2461fa9 Mon Sep 17 00:00:00 2001 From: Norbel Ambanumben Date: Sat, 18 Jan 2025 20:04:06 +0100 Subject: feat: replace `mlkit` with `zxing` --- app/src/main/AndroidManifest.xml | 7 +- .../activities/scanner/ScannerActivity.java | 183 --------------------- .../fragments/ProviderSelectionFragment.java | 37 +++-- app/src/main/res/layout/a_scanner.xml | 29 ---- 4 files changed, 26 insertions(+), 230 deletions(-) delete mode 100644 app/src/main/java/se/leap/bitmaskclient/providersetup/activities/scanner/ScannerActivity.java delete mode 100644 app/src/main/res/layout/a_scanner.xml (limited to 'app/src') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3a762180..6759862e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -114,10 +114,11 @@ - + tools:replace="screenOrientation" /> + handleQrResult(result, previewView) - ); - - cameraController.setImageAnalysisAnalyzer(ContextCompat.getMainExecutor(this), mlKitAnalyzer); - - cameraController.bindToLifecycle(this); - previewView.setController(cameraController); - } - - private void handleQrResult(MlKitAnalyzer.Result result, PreviewView previewView) { - var barcodeResults = result.getValue(barcodeScanner); - if ((barcodeResults == null) || (barcodeResults.isEmpty()) || (barcodeResults.get(0) == null)) { - previewView.getOverlay().clear(); - previewView.setOnTouchListener((v, event) -> false); //no-op - return; - } - try { - Introducer introducer = Introducer.fromUrl(barcodeResults.get(0).getRawValue()); - if (introducer.validate()) { - setResult(RESULT_OK, new Intent().putExtra(INVITE_CODE, introducer)); - } else { - Toast.makeText(this, R.string.invalid_code, Toast.LENGTH_SHORT).show(); - } - } catch (Exception e) { - Log.e(TAG, "Introducer error: " + e.getMessage()); - Toast.makeText(this, R.string.invalid_code, Toast.LENGTH_SHORT).show(); - } - previewView.setOnTouchListener((v, event) -> false); //no-op - previewView.getOverlay().clear(); - - finish(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - cameraExecutor.shutdown(); - barcodeScanner.close(); - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - return true; - } - return super.onOptionsItemSelected(item); - } - - private boolean allPermissionsGranted() { - for (String permission : REQUIRED_PERMISSIONS) { - if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { - return false; - } - } - return true; - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == REQUEST_CODE_PERMISSIONS) { - if (allPermissionsGranted()) { - startCamera(); - } else { - Toast.makeText(this, "Permissions not granted by the user.", Toast.LENGTH_SHORT).show(); - finish(); - } - } - } -} 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 e4302be5..3a75925e 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 @@ -3,8 +3,6 @@ package se.leap.bitmaskclient.providersetup.fragments; import static se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModel.ADD_PROVIDER; import static se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModel.INVITE_CODE_PROVIDER; -import android.app.Activity; -import android.content.Intent; import android.graphics.Typeface; import android.os.Bundle; import android.text.Editable; @@ -15,11 +13,13 @@ import android.view.ViewGroup; import android.widget.RadioButton; import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.ViewModelProvider; +import com.journeyapps.barcodescanner.ScanContract; +import com.journeyapps.barcodescanner.ScanOptions; + import java.util.ArrayList; import se.leap.bitmaskclient.R; @@ -28,13 +28,12 @@ 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.activities.scanner.ScannerActivity; 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 scannerActivityResultLauncher; + private ActivityResultLauncher scannerActivityResultLauncher; private ProviderSelectionViewModel viewModel; private ArrayList radioButtons; @@ -55,15 +54,17 @@ public class ProviderSelectionFragment extends BaseSetupFragment implements Canc new ProviderSelectionViewModelFactory( getContext().getApplicationContext().getAssets())). get(ProviderSelectionViewModel.class); - scannerActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() == Activity.RESULT_OK) { - Intent data = result.getData(); - if (data != null) { - Introducer introducer = data.getParcelableExtra(ScannerActivity.INVITE_CODE); - binding.editCustomProvider.setText(introducer.toUrl()); - } - } - }); + + scannerActivityResultLauncher = registerForActivityResult(new ScanContract(), result -> { + if(result.getContents() != null) { + try { + Introducer introducer = Introducer.fromUrl(result.getContents()); + binding.editCustomProvider.setText(introducer.toUrl()); + } catch (Exception e) { + //binding.editCustomProvider.setText(result.getContents()); + } + } + }); } @Override @@ -107,7 +108,13 @@ public class ProviderSelectionFragment extends BaseSetupFragment implements Canc } private void initQrScanner() { - binding.btnQrScanner.setOnClickListener(v -> scannerActivityResultLauncher.launch(ScannerActivity.newIntent(getContext()))); + binding.btnQrScanner.setOnClickListener(v -> { + ScanOptions options = new ScanOptions(); + options.setBeepEnabled(false); + options.setBarcodeImageEnabled(true); + options.setOrientationLocked(false); + scannerActivityResultLauncher.launch(options); + }); } diff --git a/app/src/main/res/layout/a_scanner.xml b/app/src/main/res/layout/a_scanner.xml deleted file mode 100644 index bf954d99..00000000 --- a/app/src/main/res/layout/a_scanner.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - \ No newline at end of file -- cgit v1.2.3