@@ -17,6 +17,7 @@ package com.king.mlkit.vision.app
1717
1818import android.Manifest
1919import android.content.Intent
20+ import android.net.Uri
2021import android.os.Bundle
2122import android.provider.MediaStore
2223import android.view.View
@@ -26,15 +27,15 @@ import androidx.appcompat.app.AppCompatActivity
2627import com.google.mlkit.vision.barcode.common.Barcode
2728import com.king.app.dialog.AppDialog
2829import com.king.app.dialog.AppDialogConfig
29- import com.king.mlkit.vision.app.`object`.MultipleObjectDetectionActivity
30- import com.king.mlkit.vision.app.`object`.ObjectDetectionActivity
3130import com.king.mlkit.vision.app.barcode.BarcodeScanningActivity
3231import com.king.mlkit.vision.app.barcode.MultipleQRCodeScanningActivity
3332import com.king.mlkit.vision.app.barcode.QRCodeScanningActivity
3433import com.king.mlkit.vision.app.face.FaceDetectionActivity
3534import com.king.mlkit.vision.app.face.FaceMeshDetectionActivity
3635import com.king.mlkit.vision.app.face.MultipleFaceDetectionActivity
3736import com.king.mlkit.vision.app.image.ImageLabelingActivity
37+ import com.king.mlkit.vision.app.`object`.MultipleObjectDetectionActivity
38+ import com.king.mlkit.vision.app.`object`.ObjectDetectionActivity
3839import com.king.mlkit.vision.app.pose.AccuratePoseDetectionActivity
3940import com.king.mlkit.vision.app.pose.PoseDetectionActivity
4041import com.king.mlkit.vision.app.segmentation.SelfieSegmentationActivity
@@ -44,20 +45,13 @@ import com.king.mlkit.vision.camera.CameraScan
4445import com.king.mlkit.vision.camera.analyze.Analyzer.OnAnalyzeListener
4546import com.king.mlkit.vision.camera.util.LogUtils
4647import com.king.mlkit.vision.camera.util.PermissionUtils
47- import java.lang.StringBuilder
48-
4948
49+ /* *
50+ * @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
51+ */
5052class MainActivity : AppCompatActivity () {
5153
52- var isQRCode = false
53-
54- companion object {
55-
56- const val REQUEST_CODE_PHOTO = 1
57- const val REQUEST_CODE_REQUEST_EXTERNAL_STORAGE = 2
58-
59- const val REQUEST_CODE_SCAN_CODE = 3
60- }
54+ var isQrCode = false
6155
6256 override fun onCreate (savedInstanceState : Bundle ? ) {
6357 super .onCreate(savedInstanceState)
@@ -66,69 +60,86 @@ class MainActivity : AppCompatActivity() {
6660
6761 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
6862 super .onActivityResult(requestCode, resultCode, data)
69- if (resultCode == RESULT_OK ){
70- when (requestCode){
71- REQUEST_CODE_PHOTO -> processPhoto(data)
63+ if (resultCode == RESULT_OK ) {
64+ when (requestCode) {
65+ REQUEST_CODE_PHOTO -> processPhoto(data?.data )
7266 REQUEST_CODE_SCAN_CODE -> processScanResult(data)
7367 }
7468 }
7569 }
7670
77- override fun onRequestPermissionsResult (requestCode : Int , permissions : Array <out String >, grantResults : IntArray ) {
71+ override fun onRequestPermissionsResult (
72+ requestCode : Int ,
73+ permissions : Array <out String >,
74+ grantResults : IntArray
75+ ) {
7876 super .onRequestPermissionsResult(requestCode, permissions, grantResults)
79- if (requestCode == REQUEST_CODE_REQUEST_EXTERNAL_STORAGE && PermissionUtils .requestPermissionsResult(Manifest .permission.READ_EXTERNAL_STORAGE ,permissions,grantResults)){
77+ if (requestCode == REQUEST_CODE_REQUEST_EXTERNAL_STORAGE && PermissionUtils .requestPermissionsResult(
78+ Manifest .permission.READ_EXTERNAL_STORAGE ,
79+ permissions,
80+ grantResults
81+ )
82+ ) {
8083 startPickPhoto()
8184 }
8285 }
8386
8487 fun getContext () = this
8588
86- private fun processScanResult (data : Intent ? ){
89+ /* *
90+ * 扫描结果
91+ */
92+ private fun processScanResult (data : Intent ? ) {
8793 val text = CameraScan .parseScanResult(data)
88- Toast .makeText(this ,text,Toast .LENGTH_SHORT ).show()
94+ Toast .makeText(this , text, Toast .LENGTH_SHORT ).show()
8995 }
9096
91- private fun processPhoto (data : Intent ? ) {
97+ private fun processPhoto (data : Uri ? ) {
9298 data?.let {
93- try {
94- val src = MediaStore .Images .Media .getBitmap(contentResolver,it.data )
95- BarcodeDecoder .process(src , object : OnAnalyzeListener <List <Barcode >? > {
99+ try {
100+ val srcBitmap = MediaStore .Images .Media .getBitmap(contentResolver, it )
101+ BarcodeDecoder .process(srcBitmap , object : OnAnalyzeListener <List <Barcode >? > {
96102 override fun onSuccess (result : List <Barcode >) {
97- if (result.isNotEmpty()){
103+ if (result.isNotEmpty()) {
98104 val buffer = StringBuilder ()
99- val bitmap = src.drawRect { canvas, paint ->
105+ // 识别成功,在图片上框出结果
106+ val bitmap = srcBitmap.drawRect { canvas, paint ->
100107 for ((index, barcode) in result.withIndex()) {
101- buffer.append(" [$index ] " ).append(barcode.displayValue).append(" \n " )
102- barcode.boundingBox?.let { box ->
108+ buffer.append(" [$index ] " ).append(barcode.displayValue)
109+ .append(" \n " )
110+ barcode.boundingBox?.let { box ->
103111 canvas.drawRect(box, paint)
104112 }
105-
106113 }
107114 }
108115
109- val config = AppDialogConfig (getContext(),R .layout.barcode_result_dialog)
116+ val config =
117+ AppDialogConfig (getContext(), R .layout.barcode_result_dialog)
110118 config.setContent(buffer)
111- .setHideCancel(true )
112- .setOnClickConfirm {
113- AppDialog .INSTANCE .dismissDialog()
114- }
119+ .setHideCancel(true )
120+ .setOnClickConfirm {
121+ AppDialog .INSTANCE .dismissDialog()
122+ }
115123 val imageView = config.getView<ImageView >(R .id.ivDialogContent)
116124 imageView.setImageBitmap(bitmap)
117125 AppDialog .INSTANCE .showDialog(config)
118- }else {
126+ } else {
119127 LogUtils .d(" result is null" )
120- Toast .makeText(getContext()," result is null" , Toast .LENGTH_SHORT ).show()
128+ Toast .makeText(getContext(), " result is null" , Toast .LENGTH_SHORT )
129+ .show()
121130 }
122131 }
123- override fun onFailure () {
132+
133+ override fun onFailure (e : Exception ? ) {
124134 LogUtils .d(" onFailure" )
125- Toast .makeText(getContext()," onFailure" , Toast .LENGTH_SHORT ).show()
135+ Toast .makeText(getContext(), " onFailure" , Toast .LENGTH_SHORT ).show()
126136 }
127- // 如果指定具体的识别条码类型,速度会更快
128- },if (isQRCode) Barcode .FORMAT_QR_CODE else Barcode .FORMAT_ALL_FORMATS )
129- }catch (e: Exception ){
137+
138+ // 如果指定具体的识别条码类型,速度会更快
139+ }, if (isQrCode) Barcode .FORMAT_QR_CODE else Barcode .FORMAT_ALL_FORMATS )
140+ } catch (e: Exception ) {
130141 e.printStackTrace()
131- Toast .makeText(getContext(),e.message, Toast .LENGTH_SHORT ).show()
142+ Toast .makeText(getContext(), e.message, Toast .LENGTH_SHORT ).show()
132143 }
133144
134145 }
@@ -138,26 +149,38 @@ class MainActivity : AppCompatActivity() {
138149 startActivity(Intent (this , cls))
139150 }
140151
141- private fun pickPhotoClicked (isQRCode : Boolean ){
142- this .isQRCode = isQRCode
143- if (PermissionUtils .checkPermission(getContext(),Manifest .permission.READ_EXTERNAL_STORAGE )){
152+ private fun pickPhotoClicked (isQRCode : Boolean ) {
153+ this .isQrCode = isQRCode
154+ if (PermissionUtils .checkPermission(
155+ getContext(),
156+ Manifest .permission.READ_EXTERNAL_STORAGE
157+ )
158+ ) {
144159 startPickPhoto()
145- }else {
146- PermissionUtils .requestPermission(this ,Manifest .permission.READ_EXTERNAL_STORAGE ,REQUEST_CODE_REQUEST_EXTERNAL_STORAGE )
160+ } else {
161+ PermissionUtils .requestPermission(
162+ this ,
163+ Manifest .permission.READ_EXTERNAL_STORAGE ,
164+ REQUEST_CODE_REQUEST_EXTERNAL_STORAGE
165+ )
147166 }
148167 }
149168
150- private fun startPickPhoto (){
151- val pickIntent = Intent (Intent .ACTION_PICK ,
152- MediaStore .Images .Media .EXTERNAL_CONTENT_URI )
169+ /* *
170+ * 选择照片 - 条形码/二维码 图片识别
171+ */
172+ private fun startPickPhoto () {
173+ val pickIntent = Intent (
174+ Intent .ACTION_PICK ,
175+ MediaStore .Images .Media .EXTERNAL_CONTENT_URI
176+ )
153177 pickIntent.setDataAndType(MediaStore .Images .Media .EXTERNAL_CONTENT_URI , " image/*" )
154178 startActivityForResult(pickIntent, REQUEST_CODE_PHOTO )
155179 }
156180
157-
158- fun onClick (v : View ){
159- when (v.id){
160- R .id.btnQRCodeScanning -> startActivityForResult(Intent (this ,QRCodeScanningActivity ::class .java),REQUEST_CODE_SCAN_CODE )
181+ fun onClick (v : View ) {
182+ when (v.id) {
183+ R .id.btnQRCodeScanning -> startActivityForResult(Intent (this , QRCodeScanningActivity ::class .java), REQUEST_CODE_SCAN_CODE )
161184 R .id.btnMultipleQRCodeScanning -> startActivity(MultipleQRCodeScanningActivity ::class .java)
162185 R .id.btnBarcodeScanning -> startActivity(BarcodeScanningActivity ::class .java)
163186 R .id.btnQRCodeRecognitionFromImage -> pickPhotoClicked(true )
@@ -175,5 +198,11 @@ class MainActivity : AppCompatActivity() {
175198 }
176199 }
177200
201+ companion object {
202+
203+ const val REQUEST_CODE_PHOTO = 1
204+ const val REQUEST_CODE_REQUEST_EXTERNAL_STORAGE = 2
205+ const val REQUEST_CODE_SCAN_CODE = 3
206+ }
178207
179208}
0 commit comments