系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、选用翻译API接口
  • 二、编写调用API的代码
    • 1.进行权限申请
    • 2.编写调用翻译API的代码
    • 3.异步调用
    • 4.解析API调用结果
    • 5.测试运行APP
  • 总结

前言

前面我们已经完成基本的界面布局和组件的定义以及点击事件的处理,接下来我们要调用翻译API使我们的英汉词典APP具有翻译功能。

一、选用翻译API接口

这里我们使用的是有道翻译的AP接口

二、编写调用API的代码

1.进行权限申请

2.编写调用翻译API的代码

private String doTranslate(String word){

    NetManager netManager = NetManager.getInstance(null);if (!netManager.hasDefaultNet()) {return "";}NetHandle netHandle = netManager.getDefaultNet();String resText = "";

// 可以获取网络状态的变化
NetStatusCallback callback = new NetStatusCallback() {
// 重写需要获取的网络状态变化的override函数
};
netManager.addDefaultNetStatusCallback(callback);

// 通过openConnection来获取URLConnection
HttpURLConnection connection = null;
try {
String urlString = “https://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=%s”; // 开发者根据实际情况自定义EXAMPLE_URL
URL url = new URL(urlString);

        URLConnection urlConnection = netHandle.openConnection(url,java.net.Proxy.NO_PROXY);if (urlConnection instanceof HttpURLConnection) {connection = (HttpURLConnection) urlConnection;connection.setRequestMethod("GET");connection.connect();// 之后可进行url的其他操作InputStream in = connection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null){response.append(line);}HiLog.info(LOG_LABEL,response.toString());resText = response.toString();}} catch(IOException e) {e.printStackTrace();} catch (Throwable throwable){throwable.printStackTrace();} finally {if (connection != null){connection.disconnect();}}return parseTranslationResult(resText);
}

3.异步调用

@Override
public void onClick(Component component) {
String inputWord = textField1.getText();
HiLog.info(LOG_LABEL,inputWord);
TaskDispatcher taskDispatcher = getGlobalTaskDispatcher(TaskPriority.DEFAULT);
taskDispatcher.asyncDispatch(new Runnable() {
@Override
public void run() {
String result = doTranslate(inputWord);
InnerEvent evt = InnerEvent.get(1);
evt.object = result;
eventHandler.sendEvent(evt);
}
});
}
});

    eventRunner = EventRunner.getMainEventRunner();eventHandler = new XEventHandler(eventRunner);
}

4.解析API调用结果

private String parseTranslationResult(String transApiResponseText){
String result = “”;
JsonElement jsonElement = JsonParser.parseString(transApiResponseText);
JsonObject jsonObject = jsonElement.getAsJsonObject();
int errorCode = jsonObject.get(“errorCode”).getAsInt();
JsonArray translateResult = jsonObject.get(“translateResult”).getAsJsonArray();
JsonObject jsonObject1 = translateResult.get(0).getAsJsonArray().get(0).getAsJsonObject();
result = jsonObject1.get(“tgt”).getAsString();
return result;
}

5.测试运行APP

测试结果如下

总结

以上就是本人所完成的一个简陋的翻译APP,在编写过程中出现了很多问题,其中很多地方都是都是通过查阅资料和观看相关视频后完成的,这样让我清楚的认识到自己对harmonyos的了解还很浅薄,只是学习了一点皮毛,还需要更多的努力,最后由衷感谢我的鸿蒙开发指导老师——刘老师,是他带我走进鸿蒙开发这一领域。

『牛角书』 开发英汉词典03——调用翻译API,并实现APP功能的实现相关推荐

  1. 『牛角书』鸿蒙开发小小播放器

    鸿蒙开发小应用-音乐播放器 话不多说,展示. 第一次进去会申请访问权限,点击"始终允许" 点击"始终允许"后退出一下,再次点击进入该应用会看到一首音乐Dream ...

  2. 『牛角书』HarmonyOS鸿蒙实战 开发一个简单聊天助手APP

    前言 我是通过b站上面老师的讲解,跟着老师编写了一个简单聊天助手app,简答实用,对于刚开始接触鸿蒙的我们来说很有帮助. 创建项目 所用软件为DevEco Studio,点击Create Harmon ...

  3. 『牛角书』基于JS实现的鸿蒙游戏——二十四点纸牌

    目录 前言 概述 正式开始 一.创建项目 二.编码 1.项目结构 2.实现思路 3.主要代码块 三.页面及功能展示 1.运算正确 2.运算错误 3.换一批及重置 本人项目仓库链接 前言 相信大家都有玩 ...

  4. python软件界面翻译_python英汉词典,在线翻译器,带GUI界面下载

    使用请求模块获得的职位信息有道词典网页,BeautifulSoup获得所需的内容,并生成gui界面通过tkinter模块.2. Python实现翻译工具git源代码地址代码如下:# !\/bin\/e ...

  5. c语言程序设计英汉词典设计,c语言(二)课程设计--电子英汉词典设计.doc

    课 程 设 计 报 告 课程名称 <C语言程序设计> 课题名称 电子英汉词典设计 专 业 班 级 学 号 201713030216 姓 名 指导教师 2018年 7 月 6 日 湖南工程学 ...

  6. [Silverlight]使用MVVM模式打造英汉词典

    最近比较关注MVVM(Model-View_ViewModel)模式,该模式十分适合WPF/Silverlight的开发.出于练习的目的打算使用Silverlight做个英汉词典(可能是由于近来疯狂的 ...

  7. c语言程序报告英汉词典,C语言电子英汉词典程序设计报告-自动化1203-李煜明.docx...

    C语言电子英汉词典程序设计报告-自动化1203-李煜明 课 程 设 计 报 告课程名称 C语言课程设计 课题名称 电子英汉词典 专 业 自动化 班 级 1203 学 号 201201020304 姓 ...

  8. APP Designer 制作简易英汉词典的回调函数书写

    APP Designer 制作简易英汉词典的回调函数书写 在学习MATLAB 的App Designer 时看到的一个有意思的小项目,主要步骤参考了slandarer 的MATLAB 手把手带你制作第 ...

  9. 基于linux的在线英汉词典(带源码)

    源码下载: 基于Linux的在线英汉词典-网络基础文档类资源-CSDN文库https://download.csdn.net/download/qq_63626307/86744311?spm=100 ...

最新文章

  1. 虹软人脸识别Android Sample Code
  2. 5.Multil-task lasso(多任务lasso回归分析)
  3. Nginx502,504和499错误解决方案
  4. java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
  5. ORACLE 多表关联 UPDATE 语句
  6. la3401解码板_拆解SONY ST-V702收音头 更换调频收音板+频偏调整
  7. Execution failed for task :Test:lintVitalRelease/Lint found fatal errors while assembling a release
  8. 二维 稳态边界层问题MATLAB,第三章 边界层理论.ppt
  9. 加入域的计算机如何本地用户登录,关于本地缓存登陆和域用户将计算机加入域的问题(转)...
  10. 电脑删除的文件去哪了?删除的数据恢复,居然有3个方法…
  11. 单模光纤和多模光纤的区别
  12. jQuery的addClass、siblings、removeClass、each、html、eq、show/hide用法
  13. JPEG 标准推荐的亮度、色度DC、AC Huffman 编码表
  14. FFmpeg[22] - 解决ffmpeg yasm not found, use --disable-yasm for a crippled build
  15. ThingsBoard教程(十):前端初级定制化
  16. IIS配置Web服务
  17. 关于数字档案馆建设实践与思考
  18. 独角兽项目 7 - 从环境到测试
  19. unity3d 流光效果 shader控制 不用代码
  20. Lesson Forty-Seven A cup of coffee. 一杯咖啡.

热门文章

  1. 电子技术经典资料汇总:PCB设计篇
  2. SQLite Expert 设置自增主键
  3. 【Java】--面向对象的编程之千锤百炼大总结
  4. [精易软件开发工程师Leo学习笔记]007流程控制
  5. WordPress付费会员制虚拟资源下载网站主题Blackcat主题
  6. Fedora 18 Setup Nvidia Optimus driver
  7. 2023-5-25第二十五天
  8. 无法通过“控制面板”卸载 Office 2003、Office 2007 或 Office 2010 的解决办法
  9. Rotate RotateAround
  10. TSN 802.1AS时钟同步协议测试