• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.airbnb.lottie.samples
2 
3 import android.content.Context
4 import android.content.Intent
5 import android.graphics.PointF
6 import android.os.Bundle
7 import android.os.Vibrator
8 import androidx.appcompat.app.AppCompatActivity
9 import com.airbnb.lottie.samples.databinding.QrscanActivityBinding
10 import com.airbnb.lottie.samples.model.CompositionArgs
11 import com.airbnb.lottie.samples.utils.vibrateCompat
12 import com.airbnb.lottie.samples.utils.viewBinding
13 import com.dlazaro66.qrcodereaderview.QRCodeReaderView
14 
15 class QRScanActivity : AppCompatActivity(), QRCodeReaderView.OnQRCodeReadListener {
16     private val binding: QrscanActivityBinding by viewBinding()
17     @Suppress("DEPRECATION")
<lambda>null18     private val vibrator by lazy { getSystemService(Context.VIBRATOR_SERVICE) as Vibrator }
19 
20     // Sometimes the qr code is read twice in rapid succession. This prevents it from being read
21     // multiple times.
22     private var hasReadQrCode = false
23 
onCreatenull24     override fun onCreate(savedInstanceState: Bundle?) {
25         super.onCreate(savedInstanceState)
26 
27         binding.qrView.setQRDecodingEnabled(true)
28         binding.qrView.setAutofocusInterval(2000L)
29         binding.qrView.setBackCamera()
30         binding.qrView.setOnQRCodeReadListener(this)
31         binding.qrView.setOnClickListener { binding.qrView.forceAutoFocus() }
32     }
33 
onResumenull34     override fun onResume() {
35         super.onResume()
36         binding.qrView.startCamera()
37         hasReadQrCode = false
38     }
39 
onPausenull40     override fun onPause() {
41         super.onPause()
42         binding.qrView.stopCamera()
43     }
44 
onQRCodeReadnull45     override fun onQRCodeRead(url: String, pointFS: Array<PointF>) {
46         if (hasReadQrCode) return
47         hasReadQrCode = true
48         vibrator.vibrateCompat(100)
49         finish()
50         startActivity(PlayerActivity.intent(this, CompositionArgs(url = url)))
51     }
52 
53     companion object {
intentnull54         fun intent(context: Context) = Intent(context, QRScanActivity::class.java)
55     }
56 }