Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.01 KB | None | 0 0
  1. package widiramadhan.sfi.ocrktp
  2.  
  3. import android.app.AlertDialog
  4. import android.app.Dialog
  5. import android.content.Intent
  6. import android.net.Uri
  7. import android.os.Bundle
  8. import android.util.Log
  9. import android.view.LayoutInflater
  10. import android.view.Window
  11. import androidx.appcompat.app.AppCompatActivity
  12. import widiramadhan.sfi.ocrktp.permissionkit.askPermissions
  13. import com.google.firebase.FirebaseApp
  14. import com.google.firebase.ml.vision.FirebaseVision
  15. import com.google.firebase.ml.vision.common.FirebaseVisionImage
  16. import com.marchinram.rxgallery.RxGallery
  17. import kotlinx.android.synthetic.main.activity_main.*
  18. import kotlinx.android.synthetic.main.content_main.*
  19. import kotlinx.android.synthetic.main.result_dialog.*
  20. import kotlinx.android.synthetic.main.result_dialog.view.*
  21. import org.jetbrains.anko.toast
  22. import org.michaelbel.bottomsheet.BottomSheet
  23. import timber.log.Timber
  24. import java.util.logging.Logger
  25. import java.util.regex.Pattern
  26.  
  27. class MainActivity : AppCompatActivity() {
  28.  
  29. private lateinit var uriPath: Uri
  30. var nik: String = ""
  31.  
  32. override fun onCreate(savedInstanceState: Bundle?) {
  33. super.onCreate(savedInstanceState)
  34. setContentView(R.layout.activity_main)
  35. setSupportActionBar(toolbar)
  36.  
  37. buttonAdd.setOnClickListener {
  38. showBottomView()
  39. }
  40. /*buttonDetect.setOnClickListener {
  41. if (::uriPath.isInitialized) {
  42. startOCR()
  43. }
  44. }*/
  45. /*liveCheck.setOnClickListener {
  46. startActivity(intentFor<LivePreviewActivity>())
  47. }*/
  48. reqPermission()
  49.  
  50. }
  51.  
  52. private fun reqPermission() {
  53. askPermissions(
  54. android.Manifest.permission.CAMERA,
  55. android.Manifest.permission.READ_EXTERNAL_STORAGE,
  56. android.Manifest.permission.WRITE_EXTERNAL_STORAGE
  57. ) {
  58. onGranted {
  59. toast("Semua Permission telah disetujui")
  60. }
  61.  
  62. onDenied {
  63. toast("Mohon setujui perijinan terlebih dahulu")
  64. }
  65.  
  66. onShowRationale {
  67. toast("Mohon setujui perijinan terlebih dahulu")
  68. }
  69.  
  70. onNeverAskAgain {
  71. toast("Mohon setujui perijinan terlebih dahulu")
  72. }
  73. }
  74. }
  75.  
  76. private fun startOCR() {
  77. FirebaseApp.initializeApp(this)
  78. val detector = FirebaseVision.getInstance().onDeviceTextRecognizer
  79. val image = FirebaseVisionImage.fromFilePath(this, uriPath)
  80. detector.processImage(image)
  81. .addOnSuccessListener { firebaseVisionText ->
  82. for (blockText in firebaseVisionText.textBlocks) {
  83. Timber.d(blockText.text)
  84. val regexKtpPattern = "[0-9]{8,16}"
  85. val pattern = Pattern.compile(regexKtpPattern)
  86. val matcher = pattern.matcher(blockText.text)
  87. if (matcher.find()) {
  88. nik = matcher.group()
  89. toast(nik)
  90. }else{
  91. nik = "Mohon ulangi pengecekan e-KTP"
  92. }
  93. }
  94. }
  95. .addOnFailureListener {
  96. Timber.e(it)
  97. toast("Failed")
  98. }
  99. }
  100.  
  101. private fun showBottomView() {
  102.  
  103. val items = arrayOf("Camera", "Galery")
  104. val builder = BottomSheet.Builder(this)
  105. builder.setDarkTheme(false)
  106. builder.setWindowDimming(80)
  107. builder.setDividers(false)
  108. builder.setFullWidth(false)
  109. builder.setItems(
  110. items
  111. ) { dialog, which ->
  112. when (which) {
  113. 0 -> {
  114. RxGallery.photoCapture(this).subscribe({ uriPhoto ->
  115. Timber.d(uriPhoto.toString())
  116. uriPath = uriPhoto
  117. startOCR()
  118.  
  119. /*val intent = Intent(this, ResultActivity::class.java)
  120. intent.putExtra("paramUriPhoto", uriPhoto.toString())
  121. //intent.putExtra("paramNIK", txt_nik.text.toString())
  122. intent.putExtra("paramNIK", nik)
  123. startActivity(intent)
  124. finish()*/
  125.  
  126. val mDialogView = LayoutInflater.from(this).inflate(R.layout.result_dialog, null)
  127. //AlertDialogBuilder
  128. val mBuilder = AlertDialog.Builder(this)
  129. .setView(mDialogView)
  130. .setTitle("Result")
  131. //show dialog
  132. val mAlertDialog = mBuilder.show()
  133. //login button click of custom layout
  134.  
  135. mDialogView.imgResult.setImageURI(uriPhoto)
  136. mDialogView.nikResult.text = nik
  137.  
  138. mDialogView.btnCheck.setOnClickListener {
  139. //dismiss dialog
  140. mAlertDialog.dismiss()
  141. //val name = mDialogView.nikResult.text.toString()
  142. //set the input text in TextView
  143. }
  144. //cancel button click of custom layout
  145. mDialogView.btnClose.setOnClickListener {
  146. //dismiss dialog
  147. mAlertDialog.dismiss()
  148. }
  149.  
  150.  
  151. }, { failed ->
  152. failed.message?.let { toast(it) }
  153. })
  154. }
  155. 1 -> {
  156. RxGallery.gallery(this, false, RxGallery.MimeType.IMAGE).subscribe({ uriPhoto ->
  157. Timber.d(uriPhoto.toString())
  158. uriPath = uriPhoto[0]
  159.  
  160.  
  161. }, { failed ->
  162. failed.message?.let { toast(it) }
  163. })
  164. }
  165. }
  166. }
  167. builder.show()
  168. }
  169.  
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement