Rename
This commit is contained in:
1 parent
b86d90021c
commit
6c0757c91b
972 files changed
+6885
-7321
No files matched your search
@@ -0,0 +1,56 @@
|
||||
package io.legato.kazusa.ui.qrcode
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.BitmapFactory
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import com.google.zxing.Result
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.base.BaseActivity
|
||||
import io.legato.kazusa.databinding.ActivityQrcodeCaptureBinding
|
||||
import io.legato.kazusa.utils.QRCodeUtils
|
||||
import io.legato.kazusa.utils.SelectImageContract
|
||||
import io.legato.kazusa.utils.launch
|
||||
import io.legato.kazusa.utils.readBytes
|
||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
class QrCodeActivity : BaseActivity<ActivityQrcodeCaptureBinding>(), ScanResultCallback {
|
||||
|
||||
override val binding by viewBinding(ActivityQrcodeCaptureBinding::inflate)
|
||||
|
||||
private val selectQrImage = registerForActivityResult(SelectImageContract()) {
|
||||
it.uri?.readBytes(this)?.let { bytes ->
|
||||
val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
|
||||
onScanResultCallback(QRCodeUtils.parseCodeResult(bitmap))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
val fTag = "qrCodeFragment"
|
||||
val qrCodeFragment = QrCodeFragment()
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(R.id.fl_content, qrCodeFragment, fTag)
|
||||
.commit()
|
||||
}
|
||||
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.qr_code_scan, menu)
|
||||
return super.onCompatCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.action_choose_from_gallery -> selectQrImage.launch()
|
||||
}
|
||||
return super.onCompatOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onScanResultCallback(result: Result?) {
|
||||
val intent = Intent()
|
||||
intent.putExtra("result", result?.text)
|
||||
setResult(RESULT_OK, intent)
|
||||
finish()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package io.legato.kazusa.ui.qrcode
|
||||
|
||||
import com.google.zxing.Result
|
||||
import com.king.camera.scan.AnalyzeResult
|
||||
import com.king.camera.scan.CameraScan
|
||||
import com.king.zxing.BarcodeCameraScanFragment
|
||||
import com.king.zxing.DecodeConfig
|
||||
import com.king.zxing.DecodeFormatManager
|
||||
import com.king.zxing.analyze.MultiFormatAnalyzer
|
||||
|
||||
class QrCodeFragment : BarcodeCameraScanFragment() {
|
||||
|
||||
override fun initCameraScan(cameraScan: CameraScan<Result>) {
|
||||
super.initCameraScan(cameraScan)
|
||||
//初始化解码配置
|
||||
val decodeConfig = DecodeConfig()
|
||||
//如果只有识别二维码的需求,这样设置效率会更高,不设置默认为DecodeFormatManager.DEFAULT_HINTS
|
||||
decodeConfig.hints = DecodeFormatManager.QR_CODE_HINTS
|
||||
//设置是否全区域识别,默认false
|
||||
decodeConfig.isFullAreaScan = true
|
||||
//设置识别区域比例,默认0.8,设置的比例最终会在预览区域裁剪基于此比例的一个矩形进行扫码识别
|
||||
decodeConfig.areaRectRatio = 0.8f
|
||||
|
||||
//在启动预览之前,设置分析器,只识别二维码
|
||||
cameraScan.setAnalyzer(MultiFormatAnalyzer(decodeConfig))
|
||||
}
|
||||
|
||||
override fun onScanResultCallback(result: AnalyzeResult<Result>) {
|
||||
cameraScan.setAnalyzeImage(false)
|
||||
(activity as? QrCodeActivity)?.onScanResultCallback(result.result)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package io.legato.kazusa.ui.qrcode
|
||||
|
||||
import android.app.Activity.RESULT_OK
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.activity.result.contract.ActivityResultContract
|
||||
|
||||
class QrCodeResult : ActivityResultContract<Unit?, String?>() {
|
||||
|
||||
override fun createIntent(context: Context, input: Unit?): Intent {
|
||||
return Intent(context, QrCodeActivity::class.java)
|
||||
}
|
||||
|
||||
override fun parseResult(resultCode: Int, intent: Intent?): String? {
|
||||
if (resultCode == RESULT_OK) {
|
||||
intent?.getStringExtra("result")?.let {
|
||||
return it
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package io.legato.kazusa.ui.qrcode
|
||||
|
||||
import com.google.zxing.Result
|
||||
|
||||
interface ScanResultCallback {
|
||||
|
||||
fun onScanResultCallback(result: Result?)
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user