【问题标题】:cannot Fix this? Got error toast "Unable to access camera" Kotlin -Android无法解决此问题?得到错误吐司“无法访问相机”Kotlin -Android
【发布时间】:2021-11-26 12:10:35
【问题描述】:

我得到 toast 错误 Unable to access camera 它是 codeScanner.errorCallback = ErrorCallback 我在 Manifest 中正确授予了相机权限

这是我的 kt 代码。

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 && grantResults.isNotEmpty() && 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()
    }
}

`<uses-permission android:name="android.permission.CAMERA"/>` 

帮助解决这个问题?

【问题讨论】:

标签: android kotlin


【解决方案1】:

首先你必须在你的 build gradle 中加入 multidex

android {
    defaultConfig {
        ...
        minSdkVersion(15) 
        targetSdkVersion(28)
        multiDexEnabled = true
    }
    ...
}

dependencies {
    implementation("androidx.multidex:multidex:2.0.1")
}

那么您有 3 种方式可供您选择 1.) 清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="androidx.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

2.) 覆盖应用程序类

class MyApplication : MultiDexApplication() {...}

3.) 将 Multidex 函数添加到应用程序类

class MyApplication : SomeOtherApplication() {

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }

在某些情况下,您可能还需要对您的 progaurd 进行修改。你可以在这里读更多关于它的内容 https://developer.android.com/studio/build/multidex#kts }

【讨论】:

  • 谢谢,它可以工作,但是之后我得到了 toast 错误 Unable to access camera 它转到 codeScanner.errorCallback = ErrorCallback 我在 Manifest 中授予了相机权限
猜你喜欢
  • 2015-02-06
  • 2021-11-24
  • 1970-01-01
  • 2021-09-03
  • 2021-08-02
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多