我正在尝试实现 ML Kit Context 来识别文本。 这是我的代码
private val textRecognition = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
private fun recognizeText(imageUri: Uri) {
try {
val inputImage = InputImage.fromFilePath(requireContext(), imageUri)
lifecycleScope.launch {
textRecognition.process(inputImage).addOnSuccessListener {
viewBinding.wordEt.text = it.text
}.addOnFailureListener {
it.printStackTrace()
}
}
} catch (e: IOException) {
e.printStackTrace()
}
}
启动我的应用程序时出现此错误
java.lang.IllegalStateException: MlKitContext has not been initialized
因此,我尝试将 MLKit.initialize() 添加到 Application.onCreate() 中,但是仍然有错误。
class TranslateApplication : Application() {
override fun onCreate() {
super.onCreate()
FavoriteRepository.initialize(this)
MlKit.initialize(this)
}
}
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.mlkit.vision.text.TextRecognizer com.google.mlkit.vision.text.internal.zzm.zza(com.google.mlkit.vision.text.TextRecognizerOptionsInterface)' on a null object reference
欢迎任何建议或见解。
添加到 AndroidManifest.xml 并禁用 contect 提供程序。 不要忘记更改 applicationId,例如 com.example.appname
<provider
android:name="com.google.mlkit.common.internal.MlKitInitProvider"
android:authorities="${applicationId}.mlkitinitprovider"
tools:node="remove" />
现在,在应用程序类的try-catch块中调用MlKit.initialize。
try {
MlKit.initialize(this)
}catch (e: Exception) {
Log.e("MainApp", e.message.toString())
}
这对我来说是工作。