文章目录

  • 百度翻译API教程(完整Android代码)
    • 1.前期准备
    • 2.简述官网通用翻译API
      • 通用翻译API HTTP地址
      • 通用翻译API HTTPS地址
    • 3.使用百度通用翻译API
      • 3.1 申请网络权限
      • 3.2 导入Retrofit
      • 3.3 编写请求服务接口
      • 3.4 MD5加密工具类
      • 3.5 根据服务器响应JSON生成实体类
      • 3.6 活动和视图
    • 4.demo运行结果

百度翻译API教程(完整Android代码)

1.前期准备

这里直接copy了官网的指南。

  1. 登录百度翻译开放平台(http://api.fanyi.baidu.com);
  2. 注册成为开发者,获得APPID;
  3. 进行开发者认证(如仅需标准版可跳过);
  4. 开通通用翻译API服务:开通链接
  5. 参考技术文档和Demo编写代码

好吧,这些注册,开通服务就不废话了,没啥好说的,官方有很详细的使用指导,看看怎么在Android开发中用吧(当然不限于这个使用场景,还有小程序/网页/后端等),直接介绍第五步吧,参考技术文档和Demo编写代码。

2.简述官网通用翻译API

通用翻译API通过HTTP接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。

通用翻译API HTTP地址

http://api.fanyi.baidu.com/api/trans/vip/translate

通用翻译API HTTPS地址

https://fanyi-api.baidu.com/api/trans/vip/translate

这里用https举例,使用HTTP协议需要额外加一个网络配置文件(Android 9.0),具体可参考我之前的文章:

Android 9.0 网络适配 使用http协议

接口需要的参数如下,引用官网的图片。

ok,到这里已经可以开始编码了。

3.使用百度通用翻译API

3.1 申请网络权限

    <!-- 网络权限 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" />

3.2 导入Retrofit

    //网络请求 Retrofit库(基于okHttp封装的网络请求库)implementation 'com.squareup.okhttp3:okhttp:4.1.0'implementation 'com.squareup.retrofit2:retrofit:2.0.2'implementation 'com.squareup.retrofit2:converter-gson:2.0.2' // 用Gson解析json的转换器

3.3 编写请求服务接口

package com.keshe.myapplication;import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;//源URL https://fanyi-api.baidu.com/api/trans/vip/translate
//参数如下
// String q  英文单词/中文
// String from  原始语种 zh中文/eh英文
// String to 目标语种   zh中文/eh英文
// String from zh中文/eh英文
// String appid 你的appid
// String salt 随机数(整形转字符串)
// String sign 签名 32位字母小写MD5编码的 appid+q+salt+密钥
public interface BaiduTranslateService {//翻译接口//表示提交表单数据,@Field注解键名//适用于数据量少的情况@POST("translate")@FormUrlEncodedCall<RespondBean> translate(@Field("q") String q, @Field("from") String from, @Field("to") String to, @Field("appid") String appid, @Field("salt") String salt,@Field("sign") String sign);
}

3.4 MD5加密工具类

请求接口中,参数sign签名需要MD5加密(32字母小写),因此编写一个MD5加密工具类供之后使用。

package com.keshe.myapplication;import java.security.MessageDigest;/*** 加密解密工具类(对字符串加密) MD5加密*/
public class MD5Utils {/*** MD5加密算法使用 对字符串加密** @param info 参数为需要加密的String* @return 返回加密后的String*/public static String getMD5Code(String info) {try {MessageDigest md5 = MessageDigest.getInstance("MD5");md5.update(info.getBytes("utf-8"));//设置编码格式byte[] encryption = md5.digest();StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < encryption.length; i++) {if (Integer.toHexString(0xff & encryption[i]).length() == 1) {stringBuffer.append("0").append(Integer.toHexString(0xff & encryption[i]));} else {stringBuffer.append(Integer.toHexString(0xff & encryption[i]));}}return stringBuffer.toString();} catch (Exception e) {return "MD5加密异常";}}}

3.5 根据服务器响应JSON生成实体类

使用postman调式接口,试一下接口,主要是为了拿到JSON。

服务器响应的JSON

{"from": "zh","to": "en","trans_result": [{"src": "你好","dst": "Hello"}]
}

使用高能gsonformat插件自动生成java实体类,没有使用的同学可以参考以下文章(虽然文章中的接口已经不能用了,但使用gsonformat插件自动生成java实体类的思路没错)

使用gsonformat插件自动生成java实体类

自动生成的实体类如下:

package com.keshe.myapplication;import java.util.List;class RespondBean {/*** from : en* to : zh* trans_result : [{"src":"can","dst":"可以"}]*/private String from;private String to;private List<TransResultBean> trans_result;public String getFrom() {return from;}public void setFrom(String from) {this.from = from;}public String getTo() {return to;}public void setTo(String to) {this.to = to;}public List<TransResultBean> getTrans_result() {return trans_result;}public void setTrans_result(List<TransResultBean> trans_result) {this.trans_result = trans_result;}public static class TransResultBean {/*** src : can* dst : 可以*/private String src;private String dst;public String getSrc() {return src;}public void setSrc(String src) {this.src = src;}public String getDst() {return dst;}public void setDst(String dst) {this.dst = dst;}}
}

3.6 活动和视图

视图很简易就三个原生的控件EditText,Button,TextView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><EditTextandroid:id="@+id/et_word"android:layout_width="match_parent"android:layout_height="wrap_content"></EditText><Buttonandroid:onClick="translate"android:id="@+id/bt_translate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/et_word"android:text="翻译"></Button><TextViewandroid:layout_centerHorizontal="true"android:id="@+id/tv_result"android:textSize="20dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/bt_translate"></TextView>
</RelativeLayout>

MainActivity代码如下,使用Retrofit请求接口,完整代码(含注释)如下:

只需修改其中的两处代码即可:

String appid = “你的appid”;//appid 管理控制台有
String key = “你的密钥”;//密钥 管理控制台有

package com.keshe.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity {String TAG = "MainActivity";Button button;EditText editText;TextView textView;static String to;//目标译文 可变 zh中文 en英文@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = findViewById(R.id.bt_translate);editText = findViewById(R.id.et_word);textView = findViewById(R.id.tv_result);}//Button onclick属性对应的监听函数public void translate(View view) {//准备请求百度翻译接口需要的参数String word = editText.getText().toString();//需查询的单词 qString from = "auto";//源语种 en 英语 zh 中文//String中英文占用一个字节,中文占用两个字节,//利用String的这个存储特性可以用来判断String中有没有中文。//原文链接:https://blog.csdn.net/u012005549/article/details/82685063if (word.length() == word.getBytes().length) {//成立则说明没有汉字,否则由汉字。to = "zh"; //没有汉字 英译中} else {to = "en";//含有汉字 中译英}String appid = "你的appid";//appid 管理控制台有String salt = (int) (Math.random() * 100 + 1) + "";//随机数 这里范围是[0,100]整数 无强制要求String key = "你的密钥";//密钥 管理控制台有String string1 = appid + word + salt + key;// string1 = appid+q+salt+密钥String sign = MD5Utils.getMD5Code(string1);// 签名 = string1的MD5加密 32位字母小写Log.d(TAG, "string1:" + string1);Log.d(TAG, "sign: " + sign);Retrofit retrofitBaidu = new Retrofit.Builder().baseUrl("https://fanyi-api.baidu.com/api/trans/vip/").addConverterFactory(GsonConverterFactory.create()) // 设置数据解析器.build();BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);Call<RespondBean> call = baiduTranslateService.translate(word, from, to, appid, salt, sign);call.enqueue(new Callback<RespondBean>() {@Overridepublic void onResponse(Call<RespondBean> call, Response<RespondBean> response) {//请求成功Log.d(TAG, "onResponse: 请求成功");RespondBean respondBean = response.body();//返回的JSON字符串对应的对象String result = respondBean.getTrans_result().get(0).getDst();//获取翻译的字符串StringLog.d(TAG, "英译中结果" + result);textView.setText(result);}@Overridepublic void onFailure(Call<RespondBean> call, Throwable t) {//请求失败 打印异常Log.d(TAG, "onResponse: 请求失败 " + t);}});}
}

其中的代码就不详细解释了,可以查看注释。

4.demo运行结果

嗯…demo就该有demo的亚子,界面简洁明了,代码也不多。
其中判断字符串是否含有中文是根据这篇博客:
如何判断一个字符串中有没有中文
至此,完成了百度通用翻译API的使用,实现了自动根据输入完成中英互译,可以中译英,也可英译中。

百度翻译API教程(完整Android代码)相关推荐

  1. 【2019-07-23】]python3 把日语翻译为中文 调用百度翻译API接口及API申请使用教程

    点击申请百度翻译API,得到一个你自己的API账户. 点击查看申请教程,感谢教程原作者. API官网提供了一个python2的使用接口的demo还有详细的解释文档 想用python3完成,代码几乎照搬 ...

  2. Android使用百度翻译api

    一直想试用一下百度翻译的接口,前些天从网上看了一篇关于json的博客,突然想试一下百度翻译api,于是我做了一个使用百度翻译api的Android小程序. 首先要使用百度翻译(也可以使用有道翻译)必须 ...

  3. python+百度翻译api制作中英文互转的代码应用实例

    本篇文章主要讲解,python+百度翻译api制作中英文互转的代码应用实例 作者:任聪聪 前提准备 1.python 3.9版本 2.注册百度翻译开发者 地址:https://fanyi-api.ba ...

  4. webbrowser 百度列表点击_百度OCR和百度翻译api申请教程

    百度api的免费额度在同行中算是非常高的,很多软件或者网页都会调用百度的相关api,方便了很多人.调用识别api的免费额度是每日50000次. 同时,百度翻译的免费额度也非常高,每月的免费额度达到 2 ...

  5. 帮我用python flask框架写一个可以上传英文pdf然后通过调取百度翻译api翻译为中文然后保存为pdf文件的代码...

    下面是一个简单的代码示例,可以帮助您使用 Python Flask 框架实现上传英文 PDF,并通过调用百度翻译 API 将其翻译为中文,然后保存为 PDF 文件: from flask import ...

  6. Pepper/Nao中级教程:第五章 Pepper/Nao机器人如何调用百度翻译API

    关于Naoqi之家 欢迎访问Naoqi之家,一个提供Pepper/Nao机器人中文开发手册的站点. http://www.naoqi.net 5.1 目标 我希望让机器人做翻译,但是Naoqi自身是没 ...

  7. python调用百度翻译-python3调用百度翻译API实时翻译的实例代码

    python3调用百度翻译API实现实时翻译 今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个 ...

  8. Go语言使用百度翻译api

    Go语言使用百度翻译api 之前做过一个使用百度翻译api的工具,这个工具用于用户的自动翻译功能,是使用C#调用百度翻译api接口,既然在学习Go语言,那必然也是要使用Go来玩耍一番.这里我是这么安排 ...

  9. C#调用百度翻译API

    使用示例: 百度返回的结果是分段的,可以发送带有换行的文字翻译. 但获取翻译结果时不能带有换行. 含有大量文档注释,按住ctrl然后鼠标点击链接可以跳转到链接 完整的语种列表可以使用包含类Langua ...

  10. 百度翻译 API 的申请 与 百度通用翻译 API 的接入

    百度翻译 API 的申请 与 百度通用翻译 API 的接入 申请 进入百度翻译开放平台,选择 立刻使用. 选择我的服务,开通 通用翻译,填信息后秒过. 建议 实名认证,提高免费额度. 通过后,可以在开 ...

最新文章

  1. php mysql用户登录_php mysql实现用户登录功能的代码示例
  2. java io工作机制_深入分析Java I/O 工作机制
  3. linux kernel的spinlock代码导读和分析
  4. MySQL怎样存储IP地址
  5. a点到b点最短路线有多少条_8下数学培优:几何体上最短路径问题,总结与提升,不一样的感受...
  6. luoguP3912 素数个数
  7. js获取内网ip_WebRTC安全问题:私有IP与mDNS
  8. 闲谈REST API
  9. 黑客帝国_屏幕保护程序
  10. Yaml读写--SnakeYaml
  11. 计算机组成原理平均cpi怎么算_计算机组成原理 第1--4章
  12. 16进制数组和ASK码字符之间的转换
  13. 申宝策略-船舶军工表现靓丽
  14. FlinkSql中表的创建及查询
  15. 卡夫卡详解_卡夫卡概念
  16. Skype for Business Server 2015-04-前端服务器-2-创建一个文件共享
  17. DevOps落地实践:BAT系列:CICD:iPipe vs CCI
  18. excel中小写变大写的公式
  19. 物理竞赛可以使用计算机,成都男孩痴迷物理 保送清华最牛计算机专业实验班...
  20. 不同封装的0Ω电阻,到底可以过多大电流?

热门文章

  1. 笔记本光驱位固态硬盘重装系统
  2. c语言闰月的计算方法,2017 清宫图闰月的计算方法
  3. matlab三角二倍角公式,数学三角函数常用的二倍角公式
  4. 服务器怎么多开虚拟机,服务器多开虚拟机操作系统
  5. 安全学习木马查杀打卡第二十一天
  6. Python字符串str和json格式的转换
  7. 自己写的Excel查询小工具,需要的可以拿走
  8. Codeforces364D Ghd【随机+检验】
  9. office 论文 页码_officexx论文页码【officexx设置论文页码】
  10. 2019版颱風24、48小時警戒綫(附帶2010版)