Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package widiramadhan.sfi.ocrktp
- import android.app.AlertDialog
- import android.app.Dialog
- import android.content.Intent
- import android.net.Uri
- import android.os.Bundle
- import android.util.Log
- import android.view.LayoutInflater
- import android.view.Window
- import androidx.appcompat.app.AppCompatActivity
- import widiramadhan.sfi.ocrktp.permissionkit.askPermissions
- import com.google.firebase.FirebaseApp
- import com.google.firebase.ml.vision.FirebaseVision
- import com.google.firebase.ml.vision.common.FirebaseVisionImage
- import com.marchinram.rxgallery.RxGallery
- import kotlinx.android.synthetic.main.activity_main.*
- import kotlinx.android.synthetic.main.content_main.*
- import kotlinx.android.synthetic.main.result_dialog.*
- import kotlinx.android.synthetic.main.result_dialog.view.*
- import org.jetbrains.anko.toast
- import org.michaelbel.bottomsheet.BottomSheet
- import timber.log.Timber
- import java.util.logging.Logger
- import java.util.regex.Pattern
- class MainActivity : AppCompatActivity() {
- private lateinit var uriPath: Uri
- var nik: String = ""
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- setSupportActionBar(toolbar)
- buttonAdd.setOnClickListener {
- showBottomView()
- }
- /*buttonDetect.setOnClickListener {
- if (::uriPath.isInitialized) {
- startOCR()
- }
- }*/
- /*liveCheck.setOnClickListener {
- startActivity(intentFor<LivePreviewActivity>())
- }*/
- reqPermission()
- }
- private fun reqPermission() {
- askPermissions(
- android.Manifest.permission.CAMERA,
- android.Manifest.permission.READ_EXTERNAL_STORAGE,
- android.Manifest.permission.WRITE_EXTERNAL_STORAGE
- ) {
- onGranted {
- toast("Semua Permission telah disetujui")
- }
- onDenied {
- toast("Mohon setujui perijinan terlebih dahulu")
- }
- onShowRationale {
- toast("Mohon setujui perijinan terlebih dahulu")
- }
- onNeverAskAgain {
- toast("Mohon setujui perijinan terlebih dahulu")
- }
- }
- }
- private fun startOCR() {
- FirebaseApp.initializeApp(this)
- val detector = FirebaseVision.getInstance().onDeviceTextRecognizer
- val image = FirebaseVisionImage.fromFilePath(this, uriPath)
- detector.processImage(image)
- .addOnSuccessListener { firebaseVisionText ->
- for (blockText in firebaseVisionText.textBlocks) {
- Timber.d(blockText.text)
- val regexKtpPattern = "[0-9]{8,16}"
- val pattern = Pattern.compile(regexKtpPattern)
- val matcher = pattern.matcher(blockText.text)
- if (matcher.find()) {
- nik = matcher.group()
- toast(nik)
- }else{
- nik = "Mohon ulangi pengecekan e-KTP"
- }
- }
- }
- .addOnFailureListener {
- Timber.e(it)
- toast("Failed")
- }
- }
- private fun showBottomView() {
- val items = arrayOf("Camera", "Galery")
- val builder = BottomSheet.Builder(this)
- builder.setDarkTheme(false)
- builder.setWindowDimming(80)
- builder.setDividers(false)
- builder.setFullWidth(false)
- builder.setItems(
- items
- ) { dialog, which ->
- when (which) {
- 0 -> {
- RxGallery.photoCapture(this).subscribe({ uriPhoto ->
- Timber.d(uriPhoto.toString())
- uriPath = uriPhoto
- startOCR()
- /*val intent = Intent(this, ResultActivity::class.java)
- intent.putExtra("paramUriPhoto", uriPhoto.toString())
- //intent.putExtra("paramNIK", txt_nik.text.toString())
- intent.putExtra("paramNIK", nik)
- startActivity(intent)
- finish()*/
- val mDialogView = LayoutInflater.from(this).inflate(R.layout.result_dialog, null)
- //AlertDialogBuilder
- val mBuilder = AlertDialog.Builder(this)
- .setView(mDialogView)
- .setTitle("Result")
- //show dialog
- val mAlertDialog = mBuilder.show()
- //login button click of custom layout
- mDialogView.imgResult.setImageURI(uriPhoto)
- mDialogView.nikResult.text = nik
- mDialogView.btnCheck.setOnClickListener {
- //dismiss dialog
- mAlertDialog.dismiss()
- //val name = mDialogView.nikResult.text.toString()
- //set the input text in TextView
- }
- //cancel button click of custom layout
- mDialogView.btnClose.setOnClickListener {
- //dismiss dialog
- mAlertDialog.dismiss()
- }
- }, { failed ->
- failed.message?.let { toast(it) }
- })
- }
- 1 -> {
- RxGallery.gallery(this, false, RxGallery.MimeType.IMAGE).subscribe({ uriPhoto ->
- Timber.d(uriPhoto.toString())
- uriPath = uriPhoto[0]
- }, { failed ->
- failed.message?.let { toast(it) }
- })
- }
- }
- }
- builder.show()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement