18034727885
2026-04-14 370014cbb9ec1ef64e7e42bb4f9a12671461d8e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package com.xw.yunwei.ui.user.mine.upload
 
import android.annotation.SuppressLint
import android.net.Uri
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
import com.xw.common.base.BaseActivity
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.yunwei.BR
import com.xw.yunwei.databinding.ActivityCertUploadBinding
import java.util.ArrayList
 
/**
 * 证件上传
 */
class CertUploadActivity : BaseActivity<ActivityCertUploadBinding, CertUploadVM>() {
    override fun getBindingVariable() = BR.viewModel
 
    override fun initData() {
        super.initData()
        viewModel.initData()
    }
    var operateIndex = -1
    override fun setListener() {
        super.setListener()
        binding.idFront.setOnClickListener { showTypeDialog(0) }
        binding.idBack.setOnClickListener { showTypeDialog(1) }
        binding.driveCard.setOnClickListener { showTypeDialog(2) }
        binding.prove.setOnClickListener { showTypeDialog(3) }
        binding.cert.setOnClickListener { showTypeDialog(4) }
 
        binding.idFrontPic.setOnClickListener { showImageDialog(0) }
        binding.idBackPic.setOnClickListener { showImageDialog(1) }
        binding.driveCardPic.setOnClickListener { showImageDialog(2) }
        binding.provePic.setOnClickListener { showImageDialog(3) }
        binding.certPic.setOnClickListener { showImageDialog(4) }
 
 
        binding.idFrontRefresh.setOnClickListener { showTypeDialog(0) }
        binding.idBackRefresh.setOnClickListener { showTypeDialog(1) }
        binding.driveCardRefresh.setOnClickListener { showTypeDialog(2) }
        binding.proveRefresh.setOnClickListener { showTypeDialog(3) }
        binding.certRefresh.setOnClickListener { showTypeDialog(4) }
    }
 
    fun showImageDialog(index: Int) {
        ShowImgListDialog(
            this@CertUploadActivity,
            listOf(viewModel.urls[index].value),
            0
        ).show()
    }
 
    fun showTypeDialog(index: Int) {
        this.operateIndex = index
        CommonDialog.showTypeDialog(this) {
            if (it == 0) takeAPhotograph() else if (it == 1) enterGallery()
        }
    }
 
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(1)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
    }
 
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
    }
 
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
        override fun onResult(result: ArrayList<LocalMedia>?) {
            result?.let { selectList ->
                for (item in selectList) {
                    val path: String = item.availablePath
                    var imgPath =
                        if (PictureMimeType.isContent(path) && !item.isCut && !item.isCompressed) {
                            UriUtils.uri2File(Uri.parse(path)).absolutePath
                        } else {
                            path
                        }
                    viewModel.urls[operateIndex].postValue(imgPath)
                }
            }
        }
 
        override fun onCancel() {}
    }
 
}