Cześć, pisze aplikację mobilną w Android Studio, która potrzebuje skanować kody kreskowe (Code 128 i EAN13), i zaimplementowałem według dokumentacji Googla ich Skaner Kodów z ML kit.
https://developers.google.com/ml-kit/code-scanner?hl=pl
I mam taką dziwną sytuację, ponieważ świeżo po zaimplementowaniu tego, skaner bez problemowo działał.
Jako że ten skaner to był już ostatni potrzebny element po dodaniu go i sprawdzeniu, zbudowałem go na .apk i projekt pozostawiłem.
Potem, postanowiłem użyć mojej aplikacji, i skaner nie chciał się uruchomić, za każdym razem wywalało funkcje skanera addOnFailureListener z błędem com.google.mlkit.common.MlKitException: Failed to scan code.
Kod kotlin:
findViewById<Button>(R.id.scanBttn).setOnClickListener {
val options = GmsBarcodeScannerOptions.Builder()
.setBarcodeFormats(
Barcode.FORMAT_EAN_13, Barcode.FORMAT_CODE_128)
.build()
val scanner = GmsBarcodeScanning.getClient(this, options)
scanner.startScan()
.addOnSuccessListener { barcode ->
// Task completed successfully
val rawValue: String? = barcode.rawValue
if(rawValue!=null){
//dalszy kod
}
}
.addOnCanceledListener {
Toast.makeText(this, "Skanowanie nie powiodło się", Toast.LENGTH_SHORT).show()
}
.addOnFailureListener { e ->
//to własnie wywala
Toast.makeText(this, "Skanowanie nie powiodło się", Toast.LENGTH_SHORT).show()
}
}
dependencies w build.gradle module:
dependencies {
implementation "androidx.activity:activity-ktx:1.6.1"
implementation 'com.squareup.okhttp3:okhttp:4.7.2'
implementation 'com.github.bumptech.glide:glide:4.11.0'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
Fragment z settings.gradle:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
}
Wie ktoś może czym może być przyczyna? Bardziej nurtuje mnie to, że na początku działało to bez żadnego problemu. Aplikacje testowałem i nie działa na moim telefonie Xiaomi Redmi Note 9 Pro i na wbudowanym emulatorze w Android Studio.