Android进阶2之有道词典开发

               

本博文只是实现有道词典的功能,并着重界面。

首先,你需要获取有道开发平台的API key。点击打开链接 申请一个吧。



利用数据接口获取数据:

http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本

版本:1.1,请求方式:get,编码方式:utf-8

主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有)

参数说明:

 type - 返回结果的类型,固定为data

 doctype - 返回结果的数据格式,xml或json或jsonp

 version - 版本,当前最新版本为1.1

 q - 要翻译的文本,不能超过200个字符,需要使用utf-8编码

errorCode:

 0 - 正常

 20 - 要翻译的文本过长

 30 - 无法进行有效的翻译

 40 - 不支持的语言类型

 50 - 无效的key

返回的样本:

json数据格式举例

http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=翻译{    "errorCode":0    "query":"翻译",    "translation":["translation"], // 有道翻译    "basic":{ // 有道词典-基本词典        "phonetic":"fān yì",        "explains":[            "translate",            "interpret"        ]    },    "web":[ // 有道词典-网络释义        {            "key":"翻译",            "value":["translator","translation","translate","Interpreter"]        },        {...}    ]}

xml数据格式举例

http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=xml&version=1.1&q=这里是有道翻译API<?xml version="1.0" encoding="UTF-8"?><youdao-fanyi>    <errorCode>0</errorCode>    <!-- 有道翻译 -->    <query><![CDATA[这里是有道翻译API]]></query>    <translation>        <paragraph><![CDATA[Here is the youdao translation API]]></paragraph>    </translation></youdao-fanyi>

jsonp数据格式举例

http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=jsonp&callback=show&version=1.1&q=APIshow({    "errorCode":0    "query":"API",    "translation":["API"], // 有道翻译    "basic":{ // 有道词典-基本词典        "explains":[            "abbr. 应用程序界面(Application Program Interface);..."        ]    },    "web":[ // 有道词典-网络释义        {            "key":"API",            "value":["应用程序接口(Application Programming Interface)","应用编程接口","应用程序编程接口","美国石油协会"]        },        {...}    ]});

具体实现:

package xiaosi.youdao;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import org.json.JSONArray;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class YoudaoActivity extends Activityprivate EditText edit    = nullprivate Button  search    = nullprivate TextView text    = nullprivate String  YouDaoBaseUrl  = "http://fanyi.youdao.com/openapi.do"private String  YouDaoKeyFrom  = "MyLifes"private String  YouDaoKey   = "你申请的API Key"private String  YouDaoType   = "data"private String  YouDaoDoctype  = "json"private String  YouDaoVersion  = "1.1"@Override public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  init(); } private void init() {  edit = (EditText) findViewById(R.id.edit);  search = (Button) findViewById(R.id.search);  search.setOnClickListener(new searchListener());  text = (TextView) findViewById(R.id.text); } private class searchListener implements OnClickListener {  @Override  public void onClick(View v)  {   String YouDaoSearchContent = edit.getText().toString().trim();   String YouDaoUrl = YouDaoBaseUrl+"?keyfrom=" + YouDaoKeyFrom + "&key=" + YouDaoKey + "&type=" + YouDaoType + "&doctype="     + YouDaoDoctype + "&type=" + YouDaoType + "&version=" + YouDaoVersion + "&q=" + YouDaoSearchContent;   try   {    AnalyzingOfJson(YouDaoUrl);   }   catch (Exception e)   {    e.printStackTrace();   }  } } private void AnalyzingOfJson(String url) throws Exception {  // 第一步,创建HttpGet对象  HttpGet httpGet = new HttpGet(url);  // 第二步,使用execute方法发送HTTP GET请求,并返回HttpResponse对象  HttpResponse httpResponse = new DefaultHttpClient().execute(httpGet);  if (httpResponse.getStatusLine().getStatusCode() == 200)  {   // 第三步,使用getEntity方法活得返回结果   String result = EntityUtils.toString(httpResponse.getEntity());   System.out.println("result:" + result);   JSONArray jsonArray = new JSONArray("[" + result + "]");   String message = null;   for (int i = 0; i < jsonArray.length(); i++)   {    JSONObject jsonObject = jsonArray.getJSONObject(i);    if (jsonObject != null)    {     String errorCode = jsonObject.getString("errorCode");     if (errorCode.equals("20"))     {      Toast.makeText(getApplicationContext(), "要翻译的文本过长", Toast.LENGTH_SHORT);     }     else if (errorCode.equals("30 "))     {      Toast.makeText(getApplicationContext(), "无法进行有效的翻译", Toast.LENGTH_SHORT);     }     else if (errorCode.equals("40"))     {      Toast.makeText(getApplicationContext(), "不支持的语言类型", Toast.LENGTH_SHORT);     }     else if (errorCode.equals("50"))     {      Toast.makeText(getApplicationContext(), "无效的key", Toast.LENGTH_SHORT);     }     else     {      // 要翻译的内容      String query = jsonObject.getString("query");      message = query;      // 翻译内容      String translation = jsonObject.getString("translation");      message += "\t" + translation;      // 有道词典-基本词典      if (jsonObject.has("basic"))      {       JSONObject basic = jsonObject.getJSONObject("basic");       if (basic.has("phonetic"))       {        String phonetic = basic.getString("phonetic");        message += "\n\t" + phonetic;       }       if (basic.has("phonetic"))       {        String explains = basic.getString("explains");        message += "\n\t" + explains;       }      }      // 有道词典-网络释义      if (jsonObject.has("web"))      {       String web = jsonObject.getString("web");       JSONArray webString = new JSONArray("[" + web + "]");       message += "\n网络释义:";       JSONArray webArray = webString.getJSONArray(0);       int count = 0;       while(!webArray.isNull(count)){                if (webArray.getJSONObject(count).has("key"))        {         String key = webArray.getJSONObject(count).getString("key");         message += "\n\t<"+(count+1)+">" + key;        }        if (webArray.getJSONObject(count).has("value"))        {         String value = webArray.getJSONObject(count).getString("value");         message += "\n\t   " + value;        }        count++;       }      }     }    }   }   text.setText(message);  }  else  {   Toast.makeText(getApplicationContext(), "提取异常", Toast.LENGTH_SHORT);  } }}

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"     android:background="@drawable/a">    <EditText        android:id="@+id/edit"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:hint="输入你要查询的内容......" />    <Button        android:id="@+id/search"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="查询" />    <ScrollView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:scrollbars="none" >        <TextView            android:id="@+id/text"            android:layout_width="fill_parent"            android:layout_height="wrap_content"             android:textColor="#000000"/>    </ScrollView></LinearLayout>






           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值