package com.dollearn.student.ui.home
|
|
import android.Manifest
|
import android.annotation.SuppressLint
|
import android.app.Activity
|
import android.content.Context
|
import android.content.Intent
|
import android.graphics.Bitmap
|
import android.util.Log
|
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat.startActivity
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.myToast
|
import com.google.gson.Gson
|
import com.google.zxing.Result
|
import com.dollearn.student.R
|
import com.dollearn.student.WeparkApplication
|
import com.dollearn.student.dialog.TipDialog
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.ScanResultBean
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.TransparentStatusBarActivity
|
import com.dollearn.student.ui.course.CourseDetailActivity
|
import com.dollearn.student.ui.game.GameActivity
|
import com.dollearn.student.utils.Const
|
import com.tbruyelle.rxpermissions2.RxPermissions
|
import com.zxing.scanner.OnScannerCompletionListener
|
import com.zxing.scanner.common.Scanner
|
import kotlinx.android.synthetic.main.scanner_activity.*
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.toast
|
|
class ScannerActivity : TransparentStatusBarActivity(), OnScannerCompletionListener {
|
companion object {
|
@SuppressLint("CheckResult")
|
fun start(context: Activity) {
|
val rxPermissions = RxPermissions(context)
|
val cameraGranted = rxPermissions.isGranted(Manifest.permission.CAMERA)
|
if (SPUtils.instance().getBoolean(Const.Permission.CAMERA_REFUSE)&& !cameraGranted){
|
context.myToast("缺少相机权限")
|
return
|
}
|
if (cameraGranted)
|
context.startActivity<ScannerActivity>()
|
else{
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "为了扫描二维码,我们需要获取摄像头使用权限","ok" to "去授权","cancel" to "不需要")
|
tipDialog.setCallback(object :TipDialog.OnClickCallback{
|
override fun onOk() {
|
RxPermissions(context).request(Manifest.permission.CAMERA)
|
.subscribe {
|
if (it) {
|
context.startActivity<ScannerActivity>()
|
} else{
|
context.myToast("没有相机权限")
|
SPUtils.instance().put(Const.Permission.CAMERA_REFUSE,true).apply()
|
}
|
}
|
}
|
|
override fun onCancel() {
|
SPUtils.instance().put(Const.Permission.CAMERA_REFUSE,true).apply()
|
}
|
})
|
tipDialog.show((context as BaseActivity).supportFragmentManager,"scan")
|
}
|
|
}
|
}
|
|
private val isWorldCup by lazy { intent.getBooleanExtra("isWorldCup",false) }
|
|
override fun setContentView(): Int {
|
return R.layout.scanner_activity
|
}
|
|
override fun initClick() {
|
}
|
|
override fun initView() {
|
scanner_view.setOnScannerCompletionListener(this)
|
scanner_view.setDrawText(
|
"将账号二维码放入框内,即可自动识别", true,
|
Scanner.dp2px(this, 14f)
|
)
|
scanner_view.setDrawTextColor(ContextCompat.getColor(this, R.color.white))
|
scanner_view.setDrawTextSize(14)
|
}
|
|
override fun onResume() {
|
scanner_view.onResume()
|
super.onResume()
|
}
|
|
override fun onPause() {
|
scanner_view.onPause()
|
super.onPause()
|
}
|
|
override fun onScannerCompletion(rawResult: Result, barcode: Bitmap?) {
|
Log.e(Const.Tag,"扫码结果:"+rawResult.text)
|
if (isWorldCup){
|
val data = Intent()
|
data.putExtra("result",rawResult.text)
|
setResult(RESULT_OK,data)
|
finish()
|
}else try {
|
val bean = Gson().fromJson<ScanResultBean>(rawResult.text, ScanResultBean::class.java)
|
when(bean.scan_type){
|
1000->{ //游戏
|
if (bean.space_id ==0 ||bean.sutu_id == 0)
|
myToast("无法识别二维码")
|
else{
|
startActivity<GameActivity>("siteId" to bean.space_id,"deviceId" to bean.sutu_id)
|
finish()
|
}
|
}
|
1001->{
|
startActivity<CourseDetailActivity>("id" to bean.id)
|
finish()
|
}
|
1002->{
|
startActivity<PlaceDetailActivity>("id" to bean.id)
|
finish()
|
}
|
else->{
|
myToast("无法识别二维码")
|
}
|
}
|
|
}catch (e:Exception){
|
myToast("无法识别二维码2")
|
}
|
}
|
}
|