1. 程式人生 > >Android有道詞典開發

Android有道詞典開發

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 MainActivity extends Activity {
	private EditText edit = null;
	private Button search = null;
	private TextView text = null;
	private String YouDaoBaseUrl = "http://fanyi.youdao.com/openapi.do";
	private String YouDaoKeyFrom = "你的daoKeyFrom";
	private String YouDaoKey = "你的api key";
	private String YouDaoType = "data";
	private String YouDaoDoctype = "json";
	private String YouDaoVersion = "1.1";

	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("explains")) {
								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);
		}
	}

}

執行效果如下:

相關推薦

Android詞典開發

import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache

android簡單的詞典開發

簡單的android有道詞典開發 第一次寫教程,不好勿怪哈!其實想寫這篇教程已經很久了,但卻一直沒有付諸行動,這個專案是偶然間在論壇裡發現的,我算是弄出來整理了一下吧!所以在此要感謝那些前輩們,沒有他們,也就沒有我們,不過這也要歸功於android的開源,好了廢話不多說,進

python3網絡爬蟲實現詞典翻譯功能

頁面 log 網絡爬蟲 span 找到 鼠標 pan 鼠標右鍵 ima 首先,在谷歌瀏覽器搜索有道詞典,進入有道詞典,點擊頁面頂端的翻譯。 進入翻譯界面,在翻譯界面輸入你好: 接著,鼠標右鍵選擇檢查: 進入頁面,找到下面這個表 python3網絡爬蟲實現有道詞典翻譯

Ubuntu 16.04安裝詞典

問題 nds 影響 -i div 直接下載 gstreamer cnblogs 目錄 以前用Ubuntu 14.04 的時候,直接下載有道詞典官方deb安裝包,就安裝好了,現在換成Ubuntu 16.04因為有些依賴問題就無法安裝成功。於是Google之,成功解決,也順便熟

python實現查詞典

int 會有 都是 不同 正則 down 利用 list 指向 因為要考英語四級,所以我今天一大早就起來被英語單詞,但是作為英語渣渣的我,只能是在網頁上挨個查單詞的意思。查的多了,心生厭倦,便想著如何才能在終端下查單詞,那樣速度不就很快了?

ubuntu16.04安裝詞典

文件 uda 安裝 有道詞典 ont 之前 .html tro 依賴問題 1.下載有道詞典 從http://cidian.youdao.com/index-linux.html 下載ubuntu64位: youdao-dict_1.1.0-0-ubuntu_amd64.de

C#導入詞典單詞本到扇貝

auto tty 工作 span text 賬戶 sha key 一個 由於扇貝查詞沒有有道方便,所以很多時候添加生詞都是在使用有道詞典,然後順手就保存到了有道單詞本,不過在扇貝記單詞可以打卡,記單詞更方便,進入扇貝頁面後發現扇貝單詞批量導入居然一次只支持10個,查了扇貝A

Python之爬蟲-- js加密(破解詞典加密的演算法)

js加密 有的反爬蟲策略採用js對需要傳輸的資料進行加密處理(通常是取md5值) 經過加密,傳輸的就是密文,但是 加密函式或者過程一定是在瀏覽器完成,也就是一定會把程式碼(js程式碼)暴露給使用者 通過閱讀加密演算法,就可以模擬出加密過程,從而達到破解 過程參看案例

爬蟲——爬取詞典

1開啟有道詞典-有道翻譯-右鍵審查元素-Network-Headers-找到General下面的URL,寫入程式碼 import urllib.request import urllib.parse url='http://fanyi.youdao.com/translate?smar

要考三級了!我用Python把詞典單詞轉化成EXCEL!答題小助手

  import xml.etree.ElementTree as ET import pandas as pd import numpy as np tree = ET.parse('words.xml') root = tree.getroot() words = pd.Da

網易詞典下載|網易詞典app下載

詞庫 htm 入門 量化 授權 原版 字母 soft .html 電子詞典改變了傳統的利用字母排序翻找紙質詞典的查詞方式,有效提高了查找的速度,形成了一種更加輕量化的查字典的方式,網易有道是比較早期就涉足電子詞典的應用之一,整體上來看詞庫量龐大,核心功能完整,很好地幫助用戶

詞典不能聯網

今天在學習的時候突然發現我的有道詞典不能聯網查詞了, 於是我就開始百度,可是百度了一上午,把網上說的方法都用了個遍也還是連不上網 比如,用管理員的身份登入,使用代理伺服器,修復ie瀏覽器,解除安裝從新在裝都沒有用,真想知道網上有沒有什麼付費的可以解決這個問題的,後來冷靜下來, 想想時不是因為

Python爬蟲-破解詞典(破解MD5的JS加密演算法)

破解有道詞典 1.進行普通爬取嘗試: 1 ''' 2 破解有道詞典 3 V1 4 ''' 5 6 from urllib import request, parse 7 8 9 def youdao(key): 10 11 url = "http://fanyi.y

linux ubuntu 安裝詞典

環境:ubuntu16.04 1.去有道官網下了一個deb的包 http://cidian.youdao.com/index-linux.html 我下載的是64位的那一個. 2.然後在相應目錄的終端下執行sudo dpkg -i youdao-dict_1.1.0-0-ubuntu_am

ubuntu16.04下安裝詞典

我選擇的是64位ubuntu版本:youdao-dict_1.1.0-0-ubuntu_amd64.deb 進去你的deb包放置的目錄,然後執行 sudo dpkg -i youdao-dict_1.1.0-0-ubuntu_amd64.deb 你會發現這個安裝不了。

Python爬取詞典

準備 實驗原理 程式碼優化 GUI介面 整合程式碼   準備 我測試使用的Python版本為3.5。 實驗原理   使用urllib.request傳送請求 解析伺服器返回的資料並提取關鍵字

ubuntu 16.04 成功安裝詞典

1.下載安裝包,網址是http://cidian.youdao.com/index-linux.html ,博主下載的是64位的deepin,使用ubuntu版本一直裝不成功; 2.進入安裝包的資料夾,進行安裝 sudo dpkg -i youdao-dict_1.1.0

詞典Linux版下載安裝

http://cidian.youdao.com/index-linux.html Ubuntu http://codown.youdao.com/cidian/linux/youdao-dict_1.1.0-0-ubuntu_amd64.deb 二進位制安裝包: http://codown.youd

開啟詞典後提示:一個或多個ActiveX控制元件無法顯示

開啟有道詞典後提示:一個或多個ActiveX控制元件無法顯示,   突然出現這個情況,下載了新的3.4版本以後同樣出現。 win7(64)系統+IE9 現在更新到最新版,還是有這個問題。       &

Ubuntu菜鳥入門(六)—— 詞典安裝

一、在有道辭掉官網上下載安裝包:   youdao-dict_1.1.0-0-ubuntu_amd64.deb 二、安裝 1、開啟下載目錄,進行安裝 sudo dpkg -i youdao-dict_1.1.0-0-ubuntu_amd64.deb       一般在16.04且1.1.0版本的有道,會