11package company.tap.tapcheckout_android.scanner_activity
22
3+ import android.Manifest
34import android.app.Activity
45import android.content.Intent
6+ import android.content.pm.PackageManager
57import android.os.Bundle
68import android.webkit.WebView
79import android.widget.Toast
810import androidx.appcompat.app.AppCompatActivity
9-
11+ import androidx.core.app.ActivityCompat
12+ import androidx.core.content.ContextCompat
1013import company.tap.cardscanner.CameraFragment
1114import company.tap.cardscanner.TapCard
1215import company.tap.cardscanner.TapScannerCallback
@@ -17,8 +20,9 @@ import company.tap.tapcheckout_android.TapCheckout
1720
1821
1922private const val SCAN_CARD_ID = 101
23+ private const val CAMERA_PERMISSION_REQUEST_CODE = 200
2024
21- class ScannerActivity : AppCompatActivity (), TapTextRecognitionCallBack, TapScannerCallback{
25+ class ScannerActivity : AppCompatActivity (), TapTextRecognitionCallBack, TapScannerCallback {
2226 // InlineViewCallback {
2327 lateinit var webView: WebView
2428 private var textRecognitionML: TapTextRecognitionML ? = null
@@ -37,16 +41,16 @@ class ScannerActivity : AppCompatActivity(), TapTextRecognitionCallBack, TapScan
3741// CameraActivity::class.java
3842// )
3943// startActivity(chooseImageIntent)
40- // val intent = ScanCardIntent.Builder(this).build()
41- // startActivityForResult(intent, SCAN_CARD_ID)
44+ // val intent = ScanCardIntent.Builder(this).build()
45+ // startActivityForResult(intent, SCAN_CARD_ID)
46+ if (isCameraPermissionGranted()) {
47+ supportFragmentManager
48+ .beginTransaction()
49+ .replace(R .id.inline_container, CameraFragment ())
50+ .commit()
4251
43- val cameraFragment = CameraFragment ()
44- cameraFragment.setCallBack(this ,this )
52+ }else requestCameraPermission()
4553
46- supportFragmentManager
47- .beginTransaction()
48- .replace(R .id.inline_container,cameraFragment)
49- .commit()
5054// supportFragmentManager
5155// .beginTransaction()
5256// .replace(company.tap.tapcardformkit.R.id.inline_container, CameraFragment())
@@ -65,12 +69,12 @@ class ScannerActivity : AppCompatActivity(), TapTextRecognitionCallBack, TapScan
6569 super .onActivityResult(requestCode, resultCode, data)
6670 when (requestCode) {
6771 SCAN_CARD_ID -> if (resultCode == Activity .RESULT_OK ) {
68- /* val card = data!!.getParcelableExtra<Card>(ScanCardIntent.RESULT_PAYCARDS_CARD)
69- if (card != null) {
70- fillCardNumber(cardNumber = card?.cardNumber.toString(), cardHolderName =card?.cardHolderName ?: "" , cvv ="" , expiryDate =card?.expirationDate ?: "" )
71- setResult(Activity.RESULT_OK, data)
72- finish()
73- }*/
72+ /* val card = data!!.getParcelableExtra<Card>(ScanCardIntent.RESULT_PAYCARDS_CARD)
73+ if (card != null) {
74+ fillCardNumber(cardNumber = card?.cardNumber.toString(), cardHolderName =card?.cardHolderName ?: "" , cvv ="" , expiryDate =card?.expirationDate ?: "" )
75+ setResult(Activity.RESULT_OK, data)
76+ finish()
77+ }*/
7478 }
7579 else -> super .onActivityResult(requestCode, resultCode, data)
7680 }
@@ -81,15 +85,15 @@ class ScannerActivity : AppCompatActivity(), TapTextRecognitionCallBack, TapScan
8185 override fun onRecognitionSuccess (card : TapCard ? ) {
8286 println (" cardNumber>>>>" + card)
8387 Toast .makeText(this @ScannerActivity, card?.cardNumber.toString(), Toast .LENGTH_LONG ).show()
84- // if (card?.cardNumber != null && card.cardHolder != null && card.expirationDate != null) {
88+ // if (card?.cardNumber != null && card.cardHolder != null && card.expirationDate != null) {
8589 if (card?.cardNumber != null ) {
8690 TapCheckout .fillCardNumber(
8791 cardNumber = card?.cardNumber.toString(),
8892 cardHolderName = card?.cardHolder ? : " " ,
8993 cvv = " " ,
9094 expiryDate = card.expirationDate ? : " "
9195 )
92- // incrementalCount = 0
96+ // incrementalCount = 0
9397 }
9498 }
9599
@@ -119,18 +123,56 @@ class ScannerActivity : AppCompatActivity(), TapTextRecognitionCallBack, TapScan
119123
120124 }
121125
122- /* override fun onScanCardFailed(e: Exception?) {
123- Toast.makeText(this@ScannerActivity, e?.message.toString(), Toast.LENGTH_LONG).show()
124- }
126+ /* override fun onScanCardFailed(e: Exception?) {
127+ Toast.makeText(this@ScannerActivity, e?.message.toString(), Toast.LENGTH_LONG).show()
128+ }
125129
126- override fun onScanCardFinished(card: Card?, cardImage: ByteArray?) {
127- Toast.makeText(this@ScannerActivity, card?.cardNumber.toString(), Toast.LENGTH_LONG).show()
130+ override fun onScanCardFinished(card: Card?, cardImage: ByteArray?) {
131+ Toast.makeText(this@ScannerActivity, card?.cardNumber.toString(), Toast.LENGTH_LONG).show()
128132
129- }*/
133+ }*/
130134 override fun onBackPressed () {
131135 super .onBackPressed()
132136 finish()
133137
134138 }
139+ private fun isCameraPermissionGranted (): Boolean {
140+ return ContextCompat .checkSelfPermission(
141+ this ,
142+ android.Manifest .permission.CAMERA
143+ ) == PackageManager .PERMISSION_GRANTED
144+ }
145+
146+ private fun requestCameraPermission () {
147+ ActivityCompat .requestPermissions(
148+ this ,
149+ arrayOf(Manifest .permission.CAMERA ),
150+ CAMERA_PERMISSION_REQUEST_CODE
151+ )
152+ }
153+
154+ private fun openCameraFragment () {
155+ supportFragmentManager
156+ .beginTransaction()
157+ .replace(R .id.inline_container, CameraFragment ())
158+ .commit()
159+ }
160+ override fun onRequestPermissionsResult (
161+ requestCode : Int ,
162+ permissions : Array <out String >,
163+ grantResults : IntArray
164+ ) {
165+ super .onRequestPermissionsResult(requestCode, permissions, grantResults)
166+ if (requestCode == CAMERA_PERMISSION_REQUEST_CODE ) {
167+ if (grantResults.isNotEmpty() && grantResults[0 ] == PackageManager .PERMISSION_GRANTED ) {
168+ openCameraFragment()
169+ } else {
170+ Toast .makeText(this , " Camera permission denied" , Toast .LENGTH_SHORT ).show()
171+ finish()
172+ }
173+ }
174+ }
175+
176+
135177
136178}
0 commit comments