From 3ecc247c76b601ad910353bbe9fa3e754adccde3 Mon Sep 17 00:00:00 2001 From: andrekir Date: Mon, 15 Nov 2021 10:54:10 -0300 Subject: [PATCH] QR Code scanning with camera --- app/src/main/AndroidManifest.xml | 13 ++++--- .../com/geeksville/mesh/ui/ChannelFragment.kt | 36 ++++++++++++++++++- app/src/main/res/layout/channel_fragment.xml | 22 ++++++++---- 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f56cb1ec..016006d7b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -50,11 +50,8 @@ - - - + + + + + @@ -287,4 +300,25 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { return ChannelProtos.ChannelSettings.ModemConfig.UNRECOGNIZED } -} + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data) + if (result != null) { + if (result.contents == null) { + Snackbar.make(binding.scanButton, R.string.channel_invalid, Snackbar.LENGTH_LONG).show() + } else { + try { + val intent = Intent(Intent.ACTION_VIEW) + intent.data = ChannelSet(Uri.parse(result.contents)).getChannelUrl(false) + startActivity(intent) + } catch (ex: ActivityNotFoundException) { + Snackbar.make(binding.scanButton, R.string.channel_invalid, Snackbar.LENGTH_LONG).show() + } catch (ex: MalformedURLException) { + Snackbar.make(binding.scanButton, R.string.channel_invalid, Snackbar.LENGTH_LONG).show() + } + } + } else { + super.onActivityResult(requestCode, resultCode, data) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/channel_fragment.xml b/app/src/main/res/layout/channel_fragment.xml index af5ea0dbb..d916757ca 100644 --- a/app/src/main/res/layout/channel_fragment.xml +++ b/app/src/main/res/layout/channel_fragment.xml @@ -98,30 +98,40 @@ android:id="@+id/resetButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="32dp" + android:layout_marginEnd="10dp" android:text="@string/reset" app:icon="@drawable/ic_twotone_public_24" app:layout_constraintBottom_toBottomOf="@id/bottomButtonsGuideline" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintEnd_toStartOf="@id/editableCheckbox" /> + +