Android中如何实现一个拍照翻译小程序
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文件中:
<manifest<application<meta-dataandroid:name="com.huawei.hms.ml.DEPENDENCY"android:value="imgseg"/></application></manifest>
1.4 在AndroidManifest.xml文件里面申请相机和存储权限
<uses-permissionandroid:name="android.permission.CAMERA"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-featureandroid:name="android.hardware.camera"/><uses-featureandroid:name="android.hardware.camera.autofocus"/>
2 代码开发关键步骤
2.1 动态权限申请
privatestaticfinalintCAMERA_PERMISSION_CODE=1;@OverridepublicvoidonCreate(BundlesavedInstanceState){//Checkingcamerapermissionif(!allPermissionsGranted()){getRuntimePermissions();}}
2.2 创建云侧文本分析器。可以通过文本检测配置器“MLRemoteTextSetting”创建文本分析器
MLRemoteTextSettingsetting=(newMLRemoteTextSetting.Factory()).setTextDensityScene(MLRemoteTextSetting.OCR_LOOSE_SCENE).create();this.textAnalyzer=MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer(setting);
2.3 通过android.graphics.Bitmap创建“MLFrame”对象用于分析器检测图片
MLFramemlFrame=newMLFrame.Creator().setBitmap(this.originBitmap).create();
2.4 调用“asyncAnalyseFrame ”方法进行文本检测
Task<MLText>task=this.textAnalyzer.asyncAnalyseFrame(mlFrame);task.addOnSuccessListener(newOnSuccessListener<MLText>(){@OverridepublicvoidonSuccess(MLTextmlText){//Transactinglogicforsegmentsuccess.if(mlText!=null){RemoteTranslateActivity.this.remoteDetectSuccess(mlText);}else{RemoteTranslateActivity.this.displayFailure();}}}).addOnFailureListener(newOnFailureListener(){@OverridepublicvoidonFailure(Exceptione){//Transactinglogicforsegmentfailure.RemoteTranslateActivity.this.displayFailure();return;}});
2.5 创建文本翻译器。可以通过文本翻译器自定义参数类“MLRemoteTranslateSetting”创建翻译器
MLRemoteTranslateSetting.Factoryfactory=newMLRemoteTranslateSetting.Factory()//Setthetargetlanguagecode.TheISO639-1standardisused..setTargetLangCode(this.dstLanguage);if(!this.srcLanguage.equals("AUTO")){//Setthesourcelanguagecode.TheISO639-1standardisused.factory.setSourceLangCode(this.srcLanguage);}this.translator=MLTranslatorFactory.getInstance().getRemoteTranslator(factory.create());
2.6 调用“asyncAnalyseFrame ”方法对文本识别获取的内容进行文本翻译
finalTask<String>task=translator.asyncTranslate(this.sourceText);task.addOnSuccessListener(newOnSuccessListener<String>(){@OverridepublicvoidonSuccess(Stringtext){if(text!=null){RemoteTranslateActivity.this.remoteDisplaySuccess(text);}else{RemoteTranslateActivity.this.displayFailure();}}}).addOnFailureListener(newOnFailureListener(){@OverridepublicvoidonFailure(Exceptione){RemoteTranslateActivity.this.displayFailure();}});
2.7 翻译完成释放资源
if(this.textAnalyzer!=null){try{this.textAnalyzer.close();}catch(IOExceptione){SmartLog.e(RemoteTranslateActivity.TAG,"Stopanalyzerfailed:"+e.getMessage());}}if(this.translator!=null){this.translator.stop();}
以上就是“Android中如何实现一个拍照翻译小程序”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...