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

如何在Android端获取ML Kit的onDevice语言包下载大小?

Android平台获取ML Kit离线语言包下载大小的实现方法

ML Kit官方没有提供直接查询未下载离线语言包体积的公开API,可通过以下两种方案实现需求:

  • 方案一:通过下载进度回调动态获取
    在触发语言包下载时注册下载进度监听器,从回调参数中直接读取语言包总大小:
    1. 先通过RemoteModelManager的isModelDownloaded()方法判断对应语言的模型是否已经下载到本地,已下载的模型可直接读取本地模型文件的占用大小。
    2. 未下载的模型触发下载流程时,添加OnProgressListener回调,回调参数DownloadProgress中的getTotalBytes()方法返回值即为该语言包的总下载体积,单位为字节。
      代码示例:
    // 以英文翻译模型为例
    val englishModel = TranslateRemoteModel.Builder(TranslateLanguage.ENGLISH).build()
    val modelManager = RemoteModelManager.getInstance()
    
    modelManager.isModelDownloaded(englishModel).addOnSuccessListener { isDownloaded ->
        if (isDownloaded) {
            // 读取本地模型文件大小,路径可通过ML Kit模型存储目录规则拼接获取
            val modelSize = File(getExternalFilesDir(null), "mlkit_models/en/translate_model.bin").length()
        } else {
            val downloadConditions = DownloadConditions.Builder().requireWifi().build()
            modelManager.download(englishModel, downloadConditions)
                .addOnProgressListener { progress ->
                    // 语言包总大小
                    val totalSize = progress.totalBytes
                    // 已下载大小
                    val downloaded = progress.bytesDownloaded
                }
        }
    }
    
  • 方案二:预置语言包体积映射表
    目前ML Kit文本翻译类单语言离线包体积范围在30MB~60MB之间,你可以提前在测试环境下载所有业务覆盖的语言包,记录每个语言对应的体积存入本地映射表,用户查询时直接查表展示即可。该方案无需触发下载就能提前展示体积,适配性更强,适合生产环境使用。每次升级ML Kit SDK版本时,重新校验一次各语言包体积更新映射表即可。

注意:以上体积范围仅针对文本翻译类离线模型,如果使用OCR、图像识别等其他ML Kit功能的离线模型,体积差异较大,需单独测试统计。

内容的提问来源于stack exchange,提问作者Aamir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:45:02