Не удалось отсканировать QR — код в Kotlin-Android?

#android #kotlin

Вопрос:

Я пытаюсь сканировать QR-код с помощью com.budiyev.android:code-scanner:2.1.0 , но когда я пытаюсь сканировать QR-код с помощью виртуальной сцены, он получил эту ошибку.

 E/GmsClient: unable to connect to service: com.google.android.gms.measurement.START on com.google.android.gms
V/FA: Connection attempt already in progress
    Activity paused, time: 863855
    Activity resumed, time: 864015
V/FA: Connection attempt already in progress
V/FA: Connection attempt already in progress
W/FA: Service connection failed: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
V/FA: Processing queued up service tasks: 4
E/FA: Discarding data. Failed to send event to service
    Failed to send current screen to service
    Discarding data. Failed to send event to service
    Failed to send current screen to service

 

Не сканировал QR-код. Как это исправить? Я правильно поставил зависимости. Зависимости являются,

  implementation 'com.google.android.gms:play-services-vision:20.1.3'
    implementation 'com.budiyev.android:code-scanner:2.1.0'
    implementation 'androidx.multidex:multidex:2.0.1'
 

Вот полный код действия QR-сканирования.

 class scannerActivity: AppCompatActivity() {

private lateinit var codeScanner: CodeScanner
val MY_CAMERA_PERMISSION_REQUEST = 1111

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_scanner)

          val Button = findViewById<Button>(R.id.button6)
          Button.setOnClickListener {
           startActivity(Intent(this@scannerActivity, conductorMenu::class.java))}

        val scannerView = findViewById<CodeScannerView>(R.id.scannerView)

        codeScanner = CodeScanner(this@scannerActivity, scannerView)
        codeScanner.camera = CodeScanner.CAMERA_BACK
        codeScanner.formats = CodeScanner.ALL_FORMATS
        codeScanner.autoFocusMode = AutoFocusMode.SAFE
        codeScanner.scanMode = ScanMode.SINGLE
        codeScanner.isAutoFocusEnabled = true
        codeScanner.isFlashEnabled = false

        codeScanner.decodeCallback = DecodeCallback {

            runOnUiThread {
                Toast.makeText(this@scannerActivity, "Scan result: ${it.text}", Toast.LENGTH_LONG).show()
            }
        }

        codeScanner.errorCallback = ErrorCallback {

            runOnUiThread {
                Toast.makeText(this@scannerActivity, "Camera error: ${it.message}", Toast.LENGTH_LONG).show()
            }
        }

       checkPermission()

    }

    fun checkPermission(){
        if (ContextCompat.checkSelfPermission(this@scannerActivity, Manifest.permission.CAMERA)!=PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this@scannerActivity, arrayOf(Manifest.permission.CAMERA), MY_CAMERA_PERMISSION_REQUEST)

        } else{
            codeScanner.startPreview()
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode==MY_CAMERA_PERMISSION_REQUEST amp;amp; grantResults.isNotEmpty() amp;amp; grantResults[0]==PackageManager.PERMISSION_GRANTED){
            codeScanner.startPreview()
        }
        else{
            Toast.makeText(this@scannerActivity, "Cannot scan until you give camera permission", Toast.LENGTH_LONG).show()
        }
    }

    override fun onResume() {
        super.onResume()
        codeScanner.startPreview()
    }

    override fun onPause() {
        codeScanner.releaseResources()
        super.onPause()
    }
}
 

камера работает нормально. (может получить доступ к камере) пожалуйста, помогите это исправить. Я все еще студент.

Комментарии:

1. прежде всего, если у вашего приложения уже есть разрешение на камеру, ваш код вызывает startPreview() дважды — в onCreate() при вызове функции checkPermission (), а затем в onResume(). Поэтому вам следует удалить его из проверки()