Commit 3e08a526 authored by wanglei's avatar wanglei

...

parent 093cb506
...@@ -36,8 +36,10 @@ class EmailCodeActivity : BaseActivity<ActivityEmailCodeBinding>(ActivityEmailCo ...@@ -36,8 +36,10 @@ class EmailCodeActivity : BaseActivity<ActivityEmailCodeBinding>(ActivityEmailCo
binding.tvSubject.text = email.subject binding.tvSubject.text = email.subject
binding.tvMessage.text = email.message binding.tvMessage.text = email.message
//MATMSG:TO:xxxx;SUB:xxx;BODY:xxx;
val qrContent = StringBuilder() val qrContent = StringBuilder()
qrContent.append("MATMSG:TO:").append(email.address).append(";") qrContent.append("MATMSG:")
qrContent.append("TO:").append(email.address).append(";")
qrContent.append("SUB:").append(email.subject).append(";") qrContent.append("SUB:").append(email.subject).append(";")
qrContent.append("BODY:").append(email.message).append(";") qrContent.append("BODY:").append(email.message).append(";")
content = qrContent.toString() content = qrContent.toString()
......
...@@ -5,6 +5,7 @@ import android.text.format.DateUtils ...@@ -5,6 +5,7 @@ import android.text.format.DateUtils
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.base.scanqr.R import com.base.scanqr.R
import com.base.scanqr.bean.EmailUIBean
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EVENT import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EVENT
...@@ -15,6 +16,7 @@ import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT ...@@ -15,6 +16,7 @@ import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WEBSITE import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WEBSITE
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
import com.base.scanqr.bean.ScanBean import com.base.scanqr.bean.ScanBean
import com.base.scanqr.bean.TextUIBean
import com.base.scanqr.bean.WifiUIBean import com.base.scanqr.bean.WifiUIBean
import com.base.scanqr.databinding.ItemHistoryBinding import com.base.scanqr.databinding.ItemHistoryBinding
import com.base.scanqr.ui.adapter.CommonViewHolder import com.base.scanqr.ui.adapter.CommonViewHolder
...@@ -39,11 +41,17 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() { ...@@ -39,11 +41,17 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
} }
KEY_TEXT -> { KEY_TEXT -> {
if (item is TextUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_text)
binding.tvDesc.text = item.content
}
} }
KEY_EMAIL -> { KEY_EMAIL -> {
if (item is EmailUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_email)
binding.tvDesc.text = item.address
}
} }
KEY_EVENT -> { KEY_EVENT -> {
......
...@@ -9,8 +9,11 @@ import android.widget.SeekBar ...@@ -9,8 +9,11 @@ import android.widget.SeekBar
import androidx.camera.core.ImageCapture.FLASH_MODE_ON import androidx.camera.core.ImageCapture.FLASH_MODE_ON
import com.base.scanqr.R import com.base.scanqr.R
import com.base.scanqr.base.BaseFragment import com.base.scanqr.base.BaseFragment
import com.base.scanqr.bean.TextUIBean
import com.base.scanqr.databinding.FragmentScanBinding import com.base.scanqr.databinding.FragmentScanBinding
import com.base.scanqr.qr.QRImageAnalyzer import com.base.scanqr.qr.QRImageAnalyzer
import com.base.scanqr.ui.email.EmailCodeActivity
import com.base.scanqr.ui.text.TextCodeActivity
import com.base.scanqr.ui.wifi.WifiCodeActivity import com.base.scanqr.ui.wifi.WifiCodeActivity
import com.base.scanqr.utils.IntentUtils.intentSafPickImage import com.base.scanqr.utils.IntentUtils.intentSafPickImage
import com.base.scanqr.utils.LogEx import com.base.scanqr.utils.LogEx
...@@ -105,6 +108,28 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl ...@@ -105,6 +108,28 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
}) })
return return
} }
if (QRCodeUtils.isEmailQR(qrCodeValue)) {
if (scanJump.get()) return
scanJump.set(true)
activity.startActivity(Intent(activity, EmailCodeActivity::class.java).apply {
val bean = QRCodeUtils.createEmailBean(qrCodeValue)
putExtra("data", Gson().toJson(bean))
})
return
}
if (qrCodeValue.isEmpty()) {
if (scanJump.get()) return
scanJump.set(true)
activity.startActivity(Intent(activity, TextCodeActivity::class.java).apply {
val bean = TextUIBean()
bean.content = qrCodeValue
bean.isCreateOrScan = false
putExtra("data", Gson().toJson(bean))
})
return
}
} }
override fun onPause() { override fun onPause() {
......
...@@ -2,6 +2,7 @@ package com.base.scanqr.utils ...@@ -2,6 +2,7 @@ package com.base.scanqr.utils
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Color import android.graphics.Color
import com.base.scanqr.bean.EmailUIBean
import com.base.scanqr.bean.WifiUIBean import com.base.scanqr.bean.WifiUIBean
import com.google.zxing.BarcodeFormat import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType import com.google.zxing.EncodeHintType
...@@ -11,6 +12,8 @@ import com.google.zxing.qrcode.QRCodeWriter ...@@ -11,6 +12,8 @@ import com.google.zxing.qrcode.QRCodeWriter
object QRCodeUtils { object QRCodeUtils {
private val TAG = "QRCodeUtils"
// fun generateQRCode(content: String, width: Int, height: Int): Bitmap? { // fun generateQRCode(content: String, width: Int, height: Int): Bitmap? {
// val writer = QRCodeWriter() // val writer = QRCodeWriter()
// val hints = EnumMap<EncodeHintType, Any>(EncodeHintType::class.java) // val hints = EnumMap<EncodeHintType, Any>(EncodeHintType::class.java)
...@@ -39,7 +42,7 @@ object QRCodeUtils { ...@@ -39,7 +42,7 @@ object QRCodeUtils {
val hints = HashMap<EncodeHintType, Any>() val hints = HashMap<EncodeHintType, Any>()
hints[EncodeHintType.MARGIN] = margin // 设置二维码边距,默认为1 hints[EncodeHintType.MARGIN] = margin // 设置二维码边距,默认为1
hints[EncodeHintType.ERROR_CORRECTION] = com.google.zxing.qrcode.decoder.ErrorCorrectionLevel.L // 设置二维码的容错级别 hints[EncodeHintType.ERROR_CORRECTION] = com.google.zxing.qrcode.decoder.ErrorCorrectionLevel.L // 设置二维码的容错级别
hints[EncodeHintType.CHARACTER_SET] = "UTF-8" // 设置字符集为UTF-8,确保中文可以正确编码
try { try {
val bitMatrix: BitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hints) val bitMatrix: BitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hints)
val bitmapWidth = bitMatrix.width + margin * 2 val bitmapWidth = bitMatrix.width + margin * 2
...@@ -61,6 +64,18 @@ object QRCodeUtils { ...@@ -61,6 +64,18 @@ object QRCodeUtils {
return null return null
} }
private fun getPairKeyValue(keyValue: String): Pair<String, String> {
val split = keyValue.split(":")
var key = ""
kotlin.runCatching {
key = split[0]
}
var value: String = ""
kotlin.runCatching {
value = split[1]
}
return Pair(key, value)
}
fun isWifiQR(qrCodeValue: String): Boolean { fun isWifiQR(qrCodeValue: String): Boolean {
val flag = qrCodeValue.startsWith("WIFI:") val flag = qrCodeValue.startsWith("WIFI:")
...@@ -71,11 +86,13 @@ object QRCodeUtils { ...@@ -71,11 +86,13 @@ object QRCodeUtils {
} }
fun createWifiBean(qrCodeValue: String): WifiUIBean { fun createWifiBean(qrCodeValue: String): WifiUIBean {
val splitList = qrCodeValue.split(";") val startTag = "WIFI:"
val subString = qrCodeValue.subSequence(startTag.length, qrCodeValue.length)
LogEx.logDebug(TAG, "subString=$subString")
val splitList = subString.split(";")
val wifiUIBean = WifiUIBean() val wifiUIBean = WifiUIBean()
wifiUIBean.isCreateOrScan = false wifiUIBean.isCreateOrScan = false
wifiUIBean.createTime = System.currentTimeMillis()
val ssidKV = splitList.find { it.startsWith("S:") } ?: "" val ssidKV = splitList.find { it.startsWith("S:") } ?: ""
wifiUIBean.ssid = getPairKeyValue(ssidKV).second wifiUIBean.ssid = getPairKeyValue(ssidKV).second
...@@ -99,16 +116,35 @@ object QRCodeUtils { ...@@ -99,16 +116,35 @@ object QRCodeUtils {
return wifiUIBean return wifiUIBean
} }
fun getPairKeyValue(keyValue: String): Pair<String, String> {
val split = keyValue.split(":") fun isEmailQR(qrCodeValue: String): Boolean {
var key = "" val flag = qrCodeValue.startsWith("MATMSG:")
kotlin.runCatching { if (flag) {
key = split[0] return true
} }
var value: String = "" return false
kotlin.runCatching {
value = split[1]
} }
return Pair(key, value)
//MATMSG:TO:179621228@qq.com;SUB:王雷;BODY:记得记得就觉得;
fun createEmailBean(qrCodeValue: String): EmailUIBean {
val startTag = "MATMSG:"
val subString = qrCodeValue.subSequence(startTag.length, qrCodeValue.length)
LogEx.logDebug(TAG, "subString=$subString")
val splitList = subString.split(";")
val emailUIBean = EmailUIBean()
emailUIBean.isCreateOrScan = false
val addressKV = splitList.find { it.startsWith("TO:") } ?: ""
emailUIBean.address = getPairKeyValue(addressKV).second
val subKV = splitList.find { it.startsWith("SUB:") } ?: ""
emailUIBean.subject = getPairKeyValue(subKV).second
val bodyKV = splitList.find { it.startsWith("BODY:") } ?: ""
emailUIBean.message = getPairKeyValue(bodyKV).second
return emailUIBean
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment