Guest User

Untitled

a guest
Jan 17th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. package com.example.priyanka.qrbarcodescanner
  2.  
  3. import android.content.Context
  4. import android.content.DialogInterface
  5. import android.content.Intent
  6. import android.content.pm.PackageManager
  7. import android.hardware.Camera
  8. import android.net.Uri
  9. import android.os.Build
  10. import android.support.v4.app.ActivityCompat
  11. import android.support.v4.content.ContextCompat
  12. import android.support.v7.app.AlertDialog
  13. import android.support.v7.app.AppCompatActivity
  14. import android.os.Bundle
  15. import android.util.Log
  16. import android.widget.Toast
  17.  
  18. import com.google.zxing.Result
  19.  
  20. import me.dm7.barcodescanner.zxing.ZXingScannerView
  21.  
  22. import android.Manifest.permission.CAMERA
  23.  
  24. class MainActivity : AppCompatActivity(), ZXingScannerView.ResultHandler {
  25. private var scannerView: ZXingScannerView? = null
  26. internal var mcontext: Context? = null
  27. override fun onCreate(savedInstanceState: Bundle?) {
  28. super.onCreate(savedInstanceState)
  29. mcontext = this
  30.  
  31. scannerView = ZXingScannerView(this)
  32. setContentView(scannerView)
  33. val currentApiVersion = Build.VERSION.SDK_INT
  34.  
  35. if (currentApiVersion >= Build.VERSION_CODES.M) {
  36. if (checkPermission()) {
  37. Toast.makeText(applicationContext, "Permission already granted!", Toast.LENGTH_LONG).show()
  38. } else {
  39. requestPermission()
  40. }
  41. }
  42. }
  43.  
  44. private fun checkPermission(): Boolean {
  45. return ContextCompat.checkSelfPermission(applicationContext, CAMERA) == PackageManager.PERMISSION_GRANTED
  46. }
  47.  
  48. private fun requestPermission() {
  49. ActivityCompat.requestPermissions(this, arrayOf(CAMERA), REQUEST_CAMERA)
  50. }
  51.  
  52. public override fun onResume() {
  53. super.onResume()
  54.  
  55. val currentapiVersion = android.os.Build.VERSION.SDK_INT
  56. if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {
  57. if (checkPermission()) {
  58. if (scannerView == null) {
  59. scannerView = ZXingScannerView(this)
  60. setContentView(scannerView)
  61. }
  62. scannerView!!.setResultHandler(this)
  63. scannerView!!.startCamera()
  64. } else {
  65. requestPermission()
  66. }
  67. }
  68. }
  69.  
  70. public override fun onDestroy() {
  71. super.onDestroy()
  72. scannerView!!.stopCamera()
  73. }
  74.  
  75. override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
  76. when (requestCode) {
  77. REQUEST_CAMERA -> if (grantResults.size > 0) {
  78.  
  79. val cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED
  80. if (cameraAccepted) {
  81. Toast.makeText(applicationContext, "Permission Granted, Now you can access camera", Toast.LENGTH_LONG).show()
  82. } else {
  83. Toast.makeText(applicationContext, "Permission Denied, You cannot access and camera", Toast.LENGTH_LONG).show()
  84. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  85. if (shouldShowRequestPermissionRationale(CAMERA)) {
  86. showMessageOKCancel("You need to allow access to both the permissions",
  87. DialogInterface.OnClickListener { dialog, which ->
  88. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  89. requestPermissions(arrayOf(CAMERA),
  90. REQUEST_CAMERA)
  91. }
  92. })
  93. return
  94. }
  95. }
  96. }
  97. }
  98. }
  99. }
  100.  
  101. private fun showMessageOKCancel(message: String, okListener: DialogInterface.OnClickListener) {
  102. android.support.v7.app.AlertDialog.Builder(mcontext!!)
  103. .setMessage(message)
  104. .setPositiveButton("OK", okListener)
  105. .setNegativeButton("Cancel", null)
  106. .create()
  107. .show()
  108. }
  109.  
  110. override fun handleResult(result: Result) {
  111. val myResult = result.text
  112. Log.d("QRCodeScanner", result.text)
  113. Log.d("QRCodeScanner", result.barcodeFormat.toString())
  114.  
  115. val builder = AlertDialog.Builder(this)
  116. builder.setTitle("Scan Result")
  117. builder.setPositiveButton("OK") { dialog, which -> scannerView!!.resumeCameraPreview(this@MainActivity) }
  118. builder.setNeutralButton("Visit") { dialog, which ->
  119. val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(myResult))
  120. startActivity(browserIntent)
  121. }
  122. builder.setMessage(result.text)
  123. val alert1 = builder.create()
  124. alert1.show()
  125. }
  126.  
  127. companion object {
  128.  
  129. private val REQUEST_CAMERA = 1
  130. private val camId = Camera.CameraInfo.CAMERA_FACING_BACK
  131. }
  132. }
Add Comment
Please, Sign In to add comment