Неразрешенная ссылка: FirebaseTranslateModelManager после обновления ML Kit - PullRequest
0 голосов
/ 19 октября 2019

Я использую Firebase ML Kit в своем приложении для перевода строк. Но поскольку я обновил свои зависимости gradle, некоторые классы не могут быть найдены и помечены как неразрешенные в Android Studio.

Это мой build.gradle файл:

    implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
    implementation 'com.google.firebase:firebase-ml-natural-language-translate-model:20.0.7'

Это мойкод:

private val modelManager: FirebaseTranslateModelManager =
        FirebaseTranslateModelManager.getInstance()

// ...

// function to download the models
fun downloadLanguage(language: Language) {
    val model = getModel(FirebaseTranslateLanguage.languageForLanguageCode(language.code))
    modelManager.downloadRemoteModelIfNeeded(model)
        .addOnCompleteListener { fetchDownloadedModels() }
}

// ...

// function to load the downloaded models
private fun fetchDownloadedModels() {
    modelManager.getAvailableModels(FirebaseApp.getInstance())
        .addOnSuccessListener { remoteModels ->
            availableModels.value =
                remoteModels.sortedBy { it.languageCode }.map { it.languageCode }
        }
}

Android Studio сообщает, что FirebaseTranslateModelManager не решена. Что мне делать?

1 Ответ

1 голос
/ 19 октября 2019

Это потому, что в последней версии ML Kit Translate Text (22.0.0) были внесены некоторые критические изменения, как указано в примечаниях к выпуску :

критические изменения: Обновлено FirebaseTranslateRemoteModel со следующими изменениями для упрощения рабочего процесса разработчика:

  • Удален метод setFirebaseApp в Builder. Пользовательский FirebaseApp теперь поддерживается с помощью метода getInstance в FirebaseModelManager.
  • Удален метод setDownloadConditions в Builder. Условия загрузки теперь передаются методу загрузки в FirebaseModelManager.

Срочные изменения: Удалено FirebaseTranslateModelManager. Модели для перевода теперь обрабатываются через FirebaseModelManager.

, поэтому вам нужно обновить код до:

private val modelManager: FirebaseModelManager = FirebaseModelManager.getInstance()

// ...

fun downloadLanguage(language: Language) {
    val model = getModel(FirebaseTranslateLanguage.languageForLanguageCode(language.code)!!)
    val conditions = FirebaseModelDownloadConditions.Builder()
            .requireWifi()
            .build()
    modelManager.download(model, conditions)
            .addOnCompleteListener { fetchDownloadedModels() }
}

// ...

private fun fetchDownloadedModels() {
    modelManager.getDownloadedModels(FirebaseTranslateRemoteModel::class.java)
            .addOnSuccessListener { remoteModels ->
                availableModels.value =
                        remoteModels.sortedBy { it.languageCode }.map { it.languageCode }
            }
}


...