Android Java获取MLKit翻译已下载语言列表的实现方法
实现MLKit已下载翻译语言检查并控制图标显示/隐藏
核心思路
- 通过MLKit的
TranslateRemoteModelManager获取本地已下载的翻译模型列表 - 针对目标语言判断模型是否存在,动态控制对应图标的显示与隐藏
完整代码实现
1. 获取已下载语言列表
import com.google.mlkit.nl.translate.TranslateRemoteModel import com.google.mlkit.nl.translate.TranslateRemoteModelManager // 获取所有已下载的翻译语言代码(如"zh"、"en") fun getDownloadedTranslationLanguages(): List<String> { val downloadedLangs = mutableListOf<String>() val modelManager = TranslateRemoteModelManager.getInstance() modelManager.getDownloadedModels() .addOnSuccessListener { models -> models.forEach { model -> downloadedLangs.add(model.language) } } .addOnFailureListener { // 处理获取失败,可添加日志或错误提示 it.printStackTrace() } return downloadedLangs }
2. 检查指定语言并更新图标状态
假设你有一个用于标识已下载的图标ivDownloadMarker,传入目标语言代码即可控制其显示:
import android.view.View import com.google.mlkit.nl.translate.TranslateRemoteModel import com.google.mlkit.nl.translate.TranslateRemoteModelManager fun updateDownloadIconVisibility(targetLang: String, downloadIcon: View) { val modelManager = TranslateRemoteModelManager.getInstance() val targetModel = TranslateRemoteModel.Builder(targetLang).build() modelManager.isModelDownloaded(targetModel) .addOnSuccessListener { isDownloaded -> // 根据下载状态切换图标显示/隐藏 downloadIcon.visibility = if (isDownloaded) View.VISIBLE else View.GONE } .addOnFailureListener { // 检查失败时默认隐藏图标 downloadIcon.visibility = View.GONE it.printStackTrace() } }
3. 实时监听模型下载/删除(可选)
如果需要在模型下载完成或删除后自动更新图标,可添加以下监听逻辑:
import com.google.mlkit.common.model.DownloadConditions import com.google.mlkit.nl.translate.Translation fun monitorModelStatus(targetLang: String, downloadIcon: View) { val targetModel = TranslateRemoteModel.Builder(targetLang).build() val downloadConditions = DownloadConditions.Builder() .requireWifi() // 按需设置下载条件,比如仅WiFi下下载 .build() // 监听模型下载完成事件 Translation.getClient().downloadModelIfNeeded(targetModel, downloadConditions) .addOnSuccessListener { updateDownloadIconVisibility(targetLang, downloadIcon) } // 监听模型删除事件(示例) // modelManager.deleteDownloadedModel(targetModel) // .addOnSuccessListener { // updateDownloadIconVisibility(targetLang, downloadIcon) // } }
必要配置
- 项目依赖:在
app/build.gradle中添加MLKit翻译库
dependencies { implementation 'com.google.mlkit:translate:17.0.1' }
- 权限配置:在
AndroidManifest.xml中添加必要权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
内容的提问来源于stack exchange,提问作者IT Student
相关产品推荐
相关产品推荐

