千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,今天小编给大家分享一下Android中如何实现一个拍照翻译小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,
千家信息网最后更新 2025年02月01日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中如何实现一个拍照翻译小程序"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0