千家信息网

Android中如何实现一个拍照翻译小程序

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,今天小编给大家分享一下Android中如何实现一个拍照翻译小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,
千家信息网最后更新 2025年11月14日Android中如何实现一个拍照翻译小程序

今天小编给大家分享一下Android中如何实现一个拍照翻译小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1 开发准备

  由于使用了云侧的服务,需要到华为的开发者联盟注册开发者账号,并且在云端开通这些服务,这里就不细讲了,直接按照官方的的AppGallery Connect配置、开通服务部分操作步骤进行即可:

   注册开发者,开通服务参考请戳:

1.1 在项目级gradle里添加华为maven仓

打开AndroidStudio项目级build.gradle文件。
  

增量添加如下maven地址:

buildscript {    repositories {                maven {url 'http://developer.huawei.com/repo/'}    }    }allprojects {    repositories {               maven { url 'http://developer.huawei.com/repo/'}    }   }

1.2 在应用级的build.gradle里面加上SDK依赖

  集成SDK。(由于使用云侧能力,只引入SDK基础包即可)

dependencies{      implementation 'com.huawei.hms:ml-computer-vision:1.0.2.300'    implementation 'com.huawei.hms:ml-computer-translate:1.0.2.300'    }

1.3 在AndroidManifest.xml文件里面申请相机和存储权限

  要使应用程序能够在用户从华为应用市场安装您的应用程序后,自动将最新的机器学习模型更新到用户设备,请将以下语句添加到该应用程序的AndroidManifest.xml文件中:

                       

1.4 在AndroidManifest.xml文件里面申请相机和存储权限


2 代码开发关键步骤

2.1 动态权限申请

private static final int CAMERA_PERMISSION_CODE = 1; @Override public void onCreate(Bundle savedInstanceState) {     // Checking camera permission      if (!allPermissionsGranted()) {       getRuntimePermissions();   }}

2.2 创建云侧文本分析器。可以通过文本检测配置器"MLRemoteTextSetting"创建文本分析器

MLRemoteTextSetting setting = (new MLRemoteTextSetting.Factory()).         setTextDensityScene(MLRemoteTextSetting.OCR_LOOSE_SCENE).create();this.textAnalyzer = MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer(setting);

2.3 通过android.graphics.Bitmap创建"MLFrame"对象用于分析器检测图片

MLFrame mlFrame = new MLFrame.Creator().setBitmap(this.originBitmap).create();

2.4 调用"asyncAnalyseFrame "方法进行文本检测

Task task = this.textAnalyzer.asyncAnalyseFrame(mlFrame);            task.addOnSuccessListener(new OnSuccessListener() {                @Override                public void onSuccess(MLText mlText) {                    // Transacting logic for segment success.                    if (mlText != null) {                        RemoteTranslateActivity.this.remoteDetectSuccess(mlText);                    } else {                        RemoteTranslateActivity.this.displayFailure();                    }                }            }).addOnFailureListener(new OnFailureListener() {                @Override                public void onFailure(Exception e) {                    // Transacting logic for segment failure.                    RemoteTranslateActivity.this.displayFailure();                    return;                }            });

2.5 创建文本翻译器。可以通过文本翻译器自定义参数类"MLRemoteTranslateSetting"创建翻译器

MLRemoteTranslateSetting.Factory factory = new MLRemoteTranslateSetting                .Factory()                // Set the target language code. The ISO 639-1 standard is used.                .setTargetLangCode(this.dstLanguage);        if (!this.srcLanguage.equals("AUTO")) {            // Set the source language code. The ISO 639-1 standard is used.            factory.setSourceLangCode(this.srcLanguage);        }        this.translator = MLTranslatorFactory.getInstance().getRemoteTranslator(factory.create());

2.6 调用"asyncAnalyseFrame "方法对文本识别获取的内容进行文本翻译

final Task task = translator.asyncTranslate(this.sourceText);        task.addOnSuccessListener(new OnSuccessListener() {            @Override            public void onSuccess(String text) {                if (text != null) {                    RemoteTranslateActivity.this.remoteDisplaySuccess(text);                } else {                    RemoteTranslateActivity.this.displayFailure();                }            }        }).addOnFailureListener(new OnFailureListener() {            @Override            public void onFailure(Exception e) {                RemoteTranslateActivity.this.displayFailure();            }        });

2.7 翻译完成释放资源

if (this.textAnalyzer != null) {            try {                this.textAnalyzer.close();            } catch (IOException e) {                SmartLog.e(RemoteTranslateActivity.TAG, "Stop analyzer failed: " + e.getMessage());            }        }        if (this.translator != null) {            this.translator.stop();        }

以上就是"Android中如何实现一个拍照翻译小程序"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

文本 程序 应用 开发 文件 知识 篇文章 服务 内容 分析器 应用程序 开发者 权限 翻译器 华为 分析 检测 可以通过 方法 步骤 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 wrx5连接数据库 数据库中的禁用索引 桂林软件开发有限公司大数据 厦门 网络安全公司排名 服务器web服务添加安全 aes初始向量IV 服务器 网络技术与物理学科的结合 华为网络安全运营官 软件开发师证书在哪里领 电脑搭建php服务器 手游服务器架设需要多少钱 上海苹果软件开发流程 进口服务器优质推荐 国外最新网络安全事件 河南聚合谷网络技术 中央关于网络安全工作 oracle数据库备份怎么导入 中国的最高层域名服务器 全国网络安全证书西政可以加吗 贵广网络技术是做些什么呢 梦幻西游服务器大战 数据库的表的字段默认值怎么设置 上海现代软件开发诚信服务 学计算机网络技术要打字快吗 网络安全终端安全o域b域m域 计算机网络安全基本概念 电脑怎么把光影加入服务器 汽车中间件软件开发 广西无忧网络技术有限公司 超云服务器系统重装
0