package com.fuban.user.ui.trip
|
|
import android.Manifest
|
import android.app.Activity
|
import android.content.Intent
|
import android.os.Bundle
|
import android.provider.MediaStore
|
import android.util.Log
|
import android.view.View
|
import cn.bingoogolapple.qrcode.core.BarcodeType
|
import cn.bingoogolapple.qrcode.core.QRCodeView
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.getUrlPath
|
import cn.sinata.xldutils.utils.myToast
|
import com.github.zackratos.ultimatebar.UltimateBar
|
import com.fuban.user.R
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.request
|
import com.tbruyelle.rxpermissions2.RxPermissions
|
import kotlinx.android.synthetic.main.activity_sacn.*
|
import org.jetbrains.anko.startActivityForResult
|
import org.jetbrains.anko.textColorResource
|
import org.jetbrains.anko.toast
|
import java.util.*
|
|
class ScanActivity : BaseActivity() {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setContentView(R.layout.activity_sacn)
|
UltimateBar.with(this)
|
.create().immersionBar() //沉浸状态栏
|
titleBar.titleView.text = "扫一扫"
|
titleBar.titleView.textColorResource = R.color.white
|
titleBar.leftView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.back_white,0,0,0)
|
titleBar.addRightButton("相册",onClickListener = View.OnClickListener {
|
RxPermissions(this).request(
|
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe {
|
if (it) {
|
val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)// 调用android的图库
|
intent.type = "image/*"
|
startActivityForResult(intent, 1)
|
}else{
|
toast("没有访问设备存储权限")
|
}
|
}
|
})
|
titleBar.getRightButton(0)?.textColorResource = R.color.white
|
initQRCode()
|
}
|
|
private fun initQRCode() {
|
zxingview.startCamera()
|
zxingview.startSpotAndShowRect()
|
zxingview.changeToScanQRCodeStyle() // 切换成扫描二维码样式
|
zxingview.setType(BarcodeType.TWO_DIMENSION, null) // 只识别二维条码
|
zxingview.setDelegate(object : QRCodeView.Delegate{
|
override fun onScanQRCodeSuccess(result: String?) {
|
zxingview.stopCamera()
|
if (result.isNullOrEmpty()){
|
myToast("识别失败,请重新扫描")
|
initQRCode()
|
}else{
|
Log.e("二维码扫描结果",result)
|
if(result.startsWith("driverId:")){
|
try {
|
val id = result.substring(9, result.length).toInt()
|
showDialog()
|
HttpManager.queryDriverInfo(id).request(this@ScanActivity,false,{_,data->
|
data?.let {
|
startActivityForResult<ChooseOrderTypeActivity>(2,"driver" to it,"startName" to intent.getStringExtra("startName"),
|
"startLat" to intent.getDoubleExtra("startLat",0.0), "startLon" to intent.getDoubleExtra("startLon",0.0))
|
finish()
|
}
|
},{_,_->
|
myToast("司机信息查询失败,请重试")
|
initQRCode()
|
})
|
}catch (e:Exception){
|
myToast("仅支持福伴出行司机二维码")
|
initQRCode()
|
}
|
}else{
|
myToast("仅支持福伴出行司机二维码")
|
initQRCode()
|
}
|
}
|
}
|
|
override fun onCameraAmbientBrightnessChanged(isDark: Boolean) {
|
var tipText = zxingview.scanBoxView.tipText
|
val ambientBrightnessTip = "\n当前环境过暗"
|
if (isDark) {
|
if (!tipText.contains(ambientBrightnessTip)) {
|
zxingview.scanBoxView.tipText = tipText + ambientBrightnessTip
|
}
|
} else {
|
if (tipText.contains(ambientBrightnessTip)) {
|
tipText = tipText.substring(0, tipText.indexOf(ambientBrightnessTip))
|
zxingview.scanBoxView.tipText = tipText
|
}
|
}
|
}
|
|
override fun onScanQRCodeOpenCameraError() {
|
myToast("请在应用权限页面开启相机权限")
|
finish()
|
}
|
})
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK&&data!=null&&requestCode == 1){
|
val uri = data.data
|
if (uri != null) {
|
val path = getUrlPath(uri)
|
if (path != null) {
|
val typeIndex = path.lastIndexOf(".")
|
if (typeIndex != -1) {
|
val fileType = path.substring(typeIndex + 1).toLowerCase(Locale.CHINA)
|
//某些设备选择图片是可以选择一些非图片的文件。然后发送出去或出错。这里简单的通过匹配后缀名来判断是否是图片文件
|
//如果是图片文件则发送。反之给出提示
|
if (fileType == "jpg" || fileType == "gif"
|
|| fileType == "png" || fileType == "jpeg"
|
|| fileType == "bmp" || fileType == "wbmp"
|
|| fileType == "ico" || fileType == "jpe") {
|
zxingview.decodeQRCode(path)
|
} else {
|
toast("无法识别的图片类型!")
|
}
|
} else {
|
toast("无法识别的图片类型!")
|
}
|
} else {
|
toast("无法识别的图片类型或路径!")
|
}
|
} else {
|
toast("无法识别的图片类型!")
|
}
|
}else if (requestCode == 2&&resultCode == Activity.RESULT_OK)
|
finish()
|
else
|
initQRCode()
|
}
|
|
override fun onStop() {
|
super.onStop()
|
zxingview.stopCamera()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
zxingview.onDestroy()
|
}
|
}
|