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

如何检查Google ML-KIT翻译包是否已安装?(Java环境)

检查翻译包安装状态并执行对应操作的实现方案

要实现检查目标翻译包是否已安装并执行不同操作,你可以利用Google ML Kit Translation API提供的isModelDownloaded()方法判断模型的安装状态,再结合业务逻辑展示对应提示或执行翻译操作。

具体实现步骤

  • 创建Translator实例:按原有逻辑构建TranslatorOptions并获取Translator对象。
  • 检查模型安装状态:调用translator.isModelDownloaded()异步判断目标语言包是否存在。
  • 分支执行操作:
    • 模型已安装:直接触发翻译逻辑。
    • 模型未安装:弹出进度对话框告知用户正在安装,完成后再执行翻译;安装失败则提示错误。

修改后的完整代码

private void translate(String textToTranslate) {
    TranslatorOptions options = new TranslatorOptions.Builder()
            .setTargetLanguage(languageTranslateTo)
            .setSourceLanguage(languageTranslateFrom)
            .build();
    Translator translator = Translation.getClient(options);

    // 异步检查翻译模型是否已安装
    translator.isModelDownloaded().addOnSuccessListener(isDownloaded -> {
        if (!isDownloaded) {
            // 模型未安装,显示进度提示对话框
            PleaseWaitDialog progressDialog = new PleaseWaitDialog(this);
            progressDialog.setEnterTransition(R.anim.fade_in);
            progressDialog.setExitTransition(R.anim.fade_out);
            progressDialog.setHasOptionsMenu(true);
            progressDialog.setCancelable(true);
            progressDialog.setProgressStyle(PleaseWaitDialog.ProgressStyle.LINEAR);
            progressDialog.setTitle("Installing Translation Model");
            progressDialog.setMessage("This is done to speed up the translation, next time you use this. Next time you translate, translation will happen in a few seconds, skipping this process");
            progressDialog.show();

            // 启动模型下载流程
            translator.downloadModelIfNeeded()
                    .addOnSuccessListener(unused -> {
                        progressDialog.dismiss();
                        translateWithModelAvailable(translator, textToTranslate);
                    })
                    .addOnFailureListener(e -> {
                        progressDialog.dismiss();
                        Log.e(TAG, "Translation model download failed: " + e.getMessage());
                        new MaterialAlertDialogBuilder(TextTranslateActivity.this)
                                .setMessage("Translation Failed. There may be a problem with installing the translation model.")
                                .setPositiveButton("OK", null)
                                .show();
                    });
        } else {
            // 模型已安装,直接执行翻译
            translateWithModelAvailable(translator, textToTranslate);
        }
    }).addOnFailureListener(e -> {
        // 检查模型状态失败的错误处理
        Log.e(TAG, "Failed to check model status: " + e.getMessage());
        new MaterialAlertDialogBuilder(TextTranslateActivity.this)
                .setMessage("Failed to check translation model status.")
                .setPositiveButton("OK", null)
                .show();
    });
}

关键说明

  • isModelDownloaded()是异步方法,必须通过addOnSuccessListener获取检查结果。
  • 进度对话框仅在模型未安装时触发,避免不必要的用户干扰。
  • 保留原有错误处理逻辑,确保各环节异常都能给用户明确反馈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:22:35