当前位置: 首页 > 知识库问答 >
问题:

无法修复此问题?Kotlin-Android出现“无法访问摄像头”错误

邹俊拔
2023-03-14

我遇到toast错误无法访问摄像头它将进入codeScanner。errorCallback=errorCallback我在清单中正确地授予了摄像头权限

这是我的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"/>` 

帮忙解决这个问题?

共有1个答案

邢思淼
2023-03-14

首先,您必须将Multidex放入构建gradle中

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

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

然后您可以从1中选择3种方式。)清单文件

<?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.)将多索引函数添加到应用程序类

class MyApplication : SomeOtherApplication() {

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

在某些情况下,您可能也必须对您的Proprod进行修改。你可以在这里读到更多https://developer.android.com/studio/build/multidex#kts}

 类似资料:
  • 我在Ubuntu16.0.4上安装了一个新的Opencv,我编写了一个程序来获取相机流并存储一些帧。它“没有”问题。但不能通过Systemd工作。systemd单元处于活动状态(不要失败),但目标文件夹中没有帧存储。 我一步一步地寻找问题,我发现代码挂在打开摄像头流上。那就是:帽子。打开(“MyIpCameraAddress”) 我试着通过bash脚本而不是脚本来运行代码。但问题依然存在 说明=a

  • 我正在尝试使用播放器模块访问android摄像头,但我遇到了以下错误,我不知道如何解决它。 这是我的密码。 我的建筑工人。规格: 有办法解决吗?

  • 在带有通知栏的torch应用程序中,当您在torch打开的情况下最小化应用程序时,如果您尝试单击通知,则表示无法访问相机。 代码是:

  • 无法修复项目,android studio新手,需要帮助修复gradle我的gradle文件,从eclipse导入项目时发生,导出完成 我得到的错误是 更改代码\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

  • 我按照这个旋转捕获的图像。但我有一个错误。 我的代码 LogCat错误 这是236号线 我怎样才能解决这个问题?我从中找到了很多解决方案,但我仍然不知道如何解决它。有人能帮我解决这个问题吗?任何帮助都会很好,谢谢!!

  • 这些显示在我的logcat里 无法通知WebView/VideoCapabilities:无法识别的配置文件2130706434用于视频/AVC W/VideoCapabilities:不支持的mime视频/Divx W/VideoCapilities:不支持的mime视频/Divx4 W/VideoCapilities:不支持的mime视频/MP4V-ESDP W/VideoCapilities