#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(). Поэтому вам следует удалить его из проверки()