diff --git a/app/build.gradle b/app/build.gradle index 60129f9..e808da9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -102,4 +102,6 @@ implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' + //扫描二维码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 60129f9..e808da9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -102,4 +102,6 @@ implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' + //扫描二维码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt b/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt new file mode 100644 index 0000000..b40c97c --- /dev/null +++ b/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt @@ -0,0 +1,26 @@ +package com.casic.br.ar.app.utils + +import android.content.Context +import cn.bertsir.zbar.QrConfig +import cn.bertsir.zbar.view.ScanLineView +import com.casic.br.ar.app.R +import com.pengxh.kt.lite.extensions.convertColor + +object QrConfigCreator { + fun create(context: Context): QrConfig = QrConfig.Builder() + .setShowLight(true) //显示手电筒按钮 + .setShowTitle(false) //显示Title + .setScanType(QrConfig.TYPE_QRCODE)//识别二维码 + .setShowAlbum(false) //显示从相册选择按钮 + .setCornerColor(R.color.themeColor.convertColor(context)) //设置扫描框颜色 + .setLineColor(R.color.themeColor.convertColor(context)) //设置扫描线颜色 + .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度 + .setDesText("二维码扫描") //扫描框下文字 + .setShowDes(true) //是否显示扫描框下面文字 + .setPlaySound(true) //是否扫描成功后bi~的声音 + .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别) + .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式 + .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式 + .setShowVibrator(true) //是否震动提醒 + .create() +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 60129f9..e808da9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -102,4 +102,6 @@ implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' + //扫描二维码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt b/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt new file mode 100644 index 0000000..b40c97c --- /dev/null +++ b/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt @@ -0,0 +1,26 @@ +package com.casic.br.ar.app.utils + +import android.content.Context +import cn.bertsir.zbar.QrConfig +import cn.bertsir.zbar.view.ScanLineView +import com.casic.br.ar.app.R +import com.pengxh.kt.lite.extensions.convertColor + +object QrConfigCreator { + fun create(context: Context): QrConfig = QrConfig.Builder() + .setShowLight(true) //显示手电筒按钮 + .setShowTitle(false) //显示Title + .setScanType(QrConfig.TYPE_QRCODE)//识别二维码 + .setShowAlbum(false) //显示从相册选择按钮 + .setCornerColor(R.color.themeColor.convertColor(context)) //设置扫描框颜色 + .setLineColor(R.color.themeColor.convertColor(context)) //设置扫描线颜色 + .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度 + .setDesText("二维码扫描") //扫描框下文字 + .setShowDes(true) //是否显示扫描框下面文字 + .setPlaySound(true) //是否扫描成功后bi~的声音 + .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别) + .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式 + .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式 + .setShowVibrator(true) //是否震动提醒 + .create() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt index 223718f..dfa04d2 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt @@ -3,13 +3,16 @@ import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider +import cn.bertsir.zbar.QrManager import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLoginBinding import com.casic.br.ar.app.utils.AuthenticationHelper import com.casic.br.ar.app.utils.LocaleConstant +import com.casic.br.ar.app.utils.QrConfigCreator import com.casic.br.ar.app.utils.RSAUtil import com.casic.br.ar.app.vm.AuthenticateViewModel import com.casic.br.ar.app.vm.UserViewModel +import com.google.gson.JsonParser import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -22,7 +25,11 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { + private val kTag = "LoginActivity" private val context = this + private val qrManager by lazy { + QrManager.getInstance().init(QrConfigCreator.create(this)) + } private lateinit var userName: String private lateinit var userPassword: String private lateinit var authenticateViewModel: AuthenticateViewModel @@ -99,6 +106,29 @@ authenticateViewModel.getPublicKey(this) } + + binding.scanCodeView.setOnClickListener { + qrManager.startScan(this) { result -> + val content = result.content + if (content.isNullOrBlank()) { + "扫码失败,请重试".show(this) + } else { + //{"password":"111111","userName":"admin"} + val element = JsonParser.parseString(content) + val jsonObject = element.asJsonObject + val userName = jsonObject.get("userName").asString + val password = jsonObject.get("password").asString + + SaveKeyValues.putValue(LocaleConstant.ACCOUNT, userName) + SaveKeyValues.putValue(LocaleConstant.PASSWORD, password) + + this.userName = userName + this.userPassword = password + + authenticateViewModel.getPublicKey(this) + } + } + } } override fun setupTopBarLayout() { diff --git a/app/build.gradle b/app/build.gradle index 60129f9..e808da9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -102,4 +102,6 @@ implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' + //扫描二维码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt b/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt new file mode 100644 index 0000000..b40c97c --- /dev/null +++ b/app/src/main/java/com/casic/br/ar/app/utils/QrConfigCreator.kt @@ -0,0 +1,26 @@ +package com.casic.br.ar.app.utils + +import android.content.Context +import cn.bertsir.zbar.QrConfig +import cn.bertsir.zbar.view.ScanLineView +import com.casic.br.ar.app.R +import com.pengxh.kt.lite.extensions.convertColor + +object QrConfigCreator { + fun create(context: Context): QrConfig = QrConfig.Builder() + .setShowLight(true) //显示手电筒按钮 + .setShowTitle(false) //显示Title + .setScanType(QrConfig.TYPE_QRCODE)//识别二维码 + .setShowAlbum(false) //显示从相册选择按钮 + .setCornerColor(R.color.themeColor.convertColor(context)) //设置扫描框颜色 + .setLineColor(R.color.themeColor.convertColor(context)) //设置扫描线颜色 + .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度 + .setDesText("二维码扫描") //扫描框下文字 + .setShowDes(true) //是否显示扫描框下面文字 + .setPlaySound(true) //是否扫描成功后bi~的声音 + .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别) + .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式 + .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式 + .setShowVibrator(true) //是否震动提醒 + .create() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt index 223718f..dfa04d2 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LoginActivity.kt @@ -3,13 +3,16 @@ import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider +import cn.bertsir.zbar.QrManager import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLoginBinding import com.casic.br.ar.app.utils.AuthenticationHelper import com.casic.br.ar.app.utils.LocaleConstant +import com.casic.br.ar.app.utils.QrConfigCreator import com.casic.br.ar.app.utils.RSAUtil import com.casic.br.ar.app.vm.AuthenticateViewModel import com.casic.br.ar.app.vm.UserViewModel +import com.google.gson.JsonParser import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -22,7 +25,11 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { + private val kTag = "LoginActivity" private val context = this + private val qrManager by lazy { + QrManager.getInstance().init(QrConfigCreator.create(this)) + } private lateinit var userName: String private lateinit var userPassword: String private lateinit var authenticateViewModel: AuthenticateViewModel @@ -99,6 +106,29 @@ authenticateViewModel.getPublicKey(this) } + + binding.scanCodeView.setOnClickListener { + qrManager.startScan(this) { result -> + val content = result.content + if (content.isNullOrBlank()) { + "扫码失败,请重试".show(this) + } else { + //{"password":"111111","userName":"admin"} + val element = JsonParser.parseString(content) + val jsonObject = element.asJsonObject + val userName = jsonObject.get("userName").asString + val password = jsonObject.get("password").asString + + SaveKeyValues.putValue(LocaleConstant.ACCOUNT, userName) + SaveKeyValues.putValue(LocaleConstant.PASSWORD, password) + + this.userName = userName + this.userPassword = password + + authenticateViewModel.getPublicKey(this) + } + } + } } override fun setupTopBarLayout() { diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 8507951..2eede11 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -64,4 +64,14 @@ android:textColor="@color/white" android:textSize="@dimen/sp_16" /> + + \ No newline at end of file