You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:00:58