- 浏览: 7340535 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在中英字典翻译的首界面简单:
一个简单的输入框一个查询按钮,实现功能如下用户输入一个字词,首先在 本地缓存(Map )中查询是否存在相关的的字词的信息。如果不存在,通过Httpclient请求一个远程连接,解析相关的结果。
在代码中重点注意的是进度条和使用:
//创建一个进度条的信息
pdialog = ProgressDialog.show(DetailActivity.this, "请稍等...", "正在请求数据...", true);
//创建一个每一个单词的线程
new Thread(){
public void run() {
//获取单词的相关的信息
final DetailItem detailItem = getDetailItems(word);
//使用手机开发中UI线程 用于更新界面的信息
runOnUiThread(new Runnable() {
@Override
public void run() {
wordTextView.setText(detailItem.getWord());
if (detailItem.getYinbiao() != null){
yinbiaoTextView.setText(Html.fromHtml("<span>[" + detailItem.getYinbiao() + "]</span><br>"));
}
if (detailItem.getDescription() != null){
descTextView.setText(detailItem.getDescription() + "\n");
}
if (!detailItem.getSampleItems().isEmpty()){
StringBuilder sb = new StringBuilder();
int i=1;
for(SampleItem item : detailItem.getSampleItems()){
sb.append(i + ". " + item.getOrig() + "\n");
sb.append(" " + item.getTrans() + "\n\n");
i++;
}
sampleTextView.setText(sb.toString());
}
if (detailItem.getAudioUrl() == null || detailItem.getAudioUrl().trim().length() == 0){
speImageButton.setEnabled(false);
}
currentItem = detailItem;
}
});
//进度条消失的进度条
pdialog.dismiss();
};
}.start();
Andriod中xml的解析:
/**
* 获取解析Document文档
* 使用Dom解析xml信息
* @param result
* @return
* @throws SAXException
* @throws IOException
* @throws ParserConfigurationException
*/
public Document getDocument(String result) throws SAXException, IOException, ParserConfigurationException{
DocumentBuilderFactory docbuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = docbuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(new InputSource(new StringReader(result)));
return doc;
}
远程访问:
/** * 获取查询单词相关的单词信息 * @param word * @return */ private DetailItem getDetailItems(String word){ //从缓存中查询如果查不到,发送请求服务 DetailItem cacheData = cache.get(word); if (cacheData != null){ return cacheData; } DetailItem rt = new DetailItem(); rt.setWord(word); try { //构建请求路径的信息 String urlString = "http://api.dict.cn/ws.php?utf8=true&q=" + URLEncoder.encode(word, "UTF-8"); Map<String,String> paramsMap=getParamsMap(); String result=HTTPClient.executeHttpClientByApache(urlString, paramsMap); if (result!=null&&result.length()>0){ //解析xml的信息 parseDocument(rt, result); } } catch (Exception e) { e.printStackTrace(); } if (cache.size()>100){ cache.remove(cache.keySet().iterator().next()); } cache.put(word, rt); return rt; }
源代码如下:
package com.easyway.android.xdict; import java.io.IOException; import java.io.StringReader; import java.net.URLEncoder; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; import android.text.Html; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; /** * Android远程请求页面解析 * @author longgangbai * @date 2010-5-28 * @version 1.0 * @since JDK6.0 */ public class DetailActivity extends Activity{ //声明一个进度条在查询显示 private ProgressDialog pdialog; private static final String YINBIAO_PATTERN = "<pron>{%}</pron>"; private static final String DESC_PATTERN = "<def>{%}</def>"; /** * 定义本地单词的缓存信息 key:String 表示单词 value:DetailItem单词相关()的信息 */ private static Map<String, DetailItem> cache = new HashMap<String, DetailItem>(); private static DetailItem currentItem = null; //缓存相关单词录音的路径 private static Map<String, MediaPlayer> audioCache = new HashMap<String, MediaPlayer>(); private TextView wordTextView =null; private TextView yinbiaoTextView=null; private TextView descTextView =null; private TextView sampleTextView =null; private Button backButton =null; private ImageButton speImageButton =null; /** * 界面创建调用 * @param savedInstanceState 上下文的信息 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置视图内容 setContentView(R.layout.detail); Intent intent = getIntent(); final String word = intent.getExtras().getString("word"); //创建各种组件的方法 createComponent(word); //绑定事件 bindListener(word); } /** * 添加各种事件 * @param word */ public void bindListener(final String word){ /** * 点击播放按钮的事件(如果存在对应的录音的信息直接播放,否则创建) */ speImageButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //缓存获取录音的信息 MediaPlayer cache = audioCache.get(currentItem.getWord()); if ( cache != null){ cache.start(); return ; } MediaPlayer mp = new MediaPlayer(); try { mp.setDataSource(currentItem.getAudioUrl()); mp.prepare(); mp.start(); if (audioCache.size() > 100){ audioCache.remove(audioCache.keySet().iterator().next()); } audioCache.put(currentItem.getWord(), mp); } catch (Exception e) { e.printStackTrace(); } } }); /** * 点击返回按钮的事件 */ backButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); //创建一个进度条的信息 pdialog = ProgressDialog.show(DetailActivity.this, "请稍等...", "正在请求数据...", true); //创建一个每一个单词的线程 new Thread(){ public void run() { //获取单词的相关的信息 final DetailItem detailItem = getDetailItems(word); //使用手机开发中UI线程 用于更新界面的信息 runOnUiThread(new Runnable() { @Override public void run() { wordTextView.setText(detailItem.getWord()); if (detailItem.getYinbiao() != null){ yinbiaoTextView.setText(Html.fromHtml("<span>[" + detailItem.getYinbiao() + "]</span><br>")); } if (detailItem.getDescription() != null){ descTextView.setText(detailItem.getDescription() + "\n"); } if (!detailItem.getSampleItems().isEmpty()){ StringBuilder sb = new StringBuilder(); int i=1; for(SampleItem item : detailItem.getSampleItems()){ sb.append(i + ". " + item.getOrig() + "\n"); sb.append(" " + item.getTrans() + "\n\n"); i++; } sampleTextView.setText(sb.toString()); } if (detailItem.getAudioUrl() == null || detailItem.getAudioUrl().trim().length() == 0){ speImageButton.setEnabled(false); } currentItem = detailItem; } }); //进度条消失的进度条 pdialog.dismiss(); }; }.start(); } /** * 创建组件 * @param word */ public void createComponent(String word){ wordTextView = (TextView) findViewById(R.id.word_textview); wordTextView.setText(word); yinbiaoTextView = (TextView) findViewById(R.id.yinbiao_textview); descTextView = (TextView) findViewById(R.id.desc_textview); sampleTextView = (TextView) findViewById(R.id.sample_textview); backButton = (Button) findViewById(R.id.back_button); speImageButton = (ImageButton) findViewById(R.id.speak_img_button); } /** * 获取查询单词相关的单词信息 * @param word * @return */ private DetailItem getDetailItems(String word){ //从缓存中查询如果查不到,发送请求服务 DetailItem cacheData = cache.get(word); if (cacheData != null){ return cacheData; } DetailItem rt = new DetailItem(); rt.setWord(word); try { //构建请求路径的信息 String urlString = "http://api.dict.cn/ws.php?utf8=true&q=" + URLEncoder.encode(word, "UTF-8"); Map<String,String> paramsMap=getParamsMap(); String result=HTTPClient.executeHttpClientByApache(urlString, paramsMap); if (result!=null&&result.length()>0){ //解析xml的信息 parseDocument(rt, result); } } catch (Exception e) { e.printStackTrace(); } if (cache.size()>100){ cache.remove(cache.keySet().iterator().next()); } cache.put(word, rt); return rt; } /** * 设置查询需要的各种参数 * @return */ public Map<String,String> getParamsMap() { Map<String,String> paramsMap=new HashMap<String,String>(); paramsMap.put("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6"); paramsMap.put("Referer", "http://dict.cn/"); return paramsMap; } /** * 获取解析Document文档 * 使用Dom解析xml信息 * @param result * @return * @throws SAXException * @throws IOException * @throws ParserConfigurationException */ public Document getDocument(String result) throws SAXException, IOException, ParserConfigurationException{ DocumentBuilderFactory docbuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = docbuilderFactory.newDocumentBuilder(); Document doc = documentBuilder.parse(new InputSource(new StringReader(result))); return doc; } /** * 相关的xml信息 * @param rt * @param result * @throws FactoryConfigurationError * @throws ParserConfigurationException * @throws SAXException * @throws IOException */ private void parseDocument(DetailItem rt, String result) throws FactoryConfigurationError, ParserConfigurationException, SAXException, IOException { //获取解析Document文档 Document doc=getDocument(result); if(doc==null) { return ; } //获取单词录音的路径 NodeList audioNodes = doc.getElementsByTagName("audio"); if (audioNodes != null && audioNodes.getLength() > 0){ rt.setAudioUrl(audioNodes.item(0).getChildNodes().item(0).getNodeValue()); } //获取音标的信息 List<List<String>> list = Squirrel.extract(YINBIAO_PATTERN, result); if (!list.isEmpty()){ rt.setYinbiao(list.get(0).get(0)); } //获取匹配的描述 List<List<String>> list2 = Squirrel.extract(DESC_PATTERN, result); if (!list2.isEmpty()){ rt.setDescription(list2.get(0).get(0)); } if (list2.get(0).get(0).indexOf("\n")> -1){ System.out.print(true); } NodeList sentNodes = doc.getElementsByTagName("sent"); if (sentNodes != null && sentNodes.getLength() > 0){ for(int i=0;i<sentNodes.getLength();i++){ Node item = sentNodes.item(i); NodeList nodeList = ((Element)item).getElementsByTagName("orig"); String orig = nodeList.item(0).getChildNodes().item(0).getNodeValue(); NodeList nodeList1 = ((Element)item).getElementsByTagName("trans"); String trans = nodeList1.item(0).getChildNodes().item(0).getNodeValue(); SampleItem si = new SampleItem(orig, trans); rt.getSampleItems().add(si); } } } }
发表评论
-
[转]年度最实用50款免费Android应用推荐
2012-11-08 16:39 3377据国外媒体报道,有人说Android应用市场比iPhone应用 ... -
GIS的学习(四十五)【转】Integration of the MBTiles format on Android
2012-10-22 17:13 2945转载自 http:/ ... -
GIS的学习(四十四)osmdroid sdcard检查
2012-10-15 16:12 2339在许多应用中使用到sdcard的检查,在osmdro ... -
GIS的学习(四十三)osmdroid基于几个经典代理类
2012-10-15 16:06 2631在osmdroid中给基于位置的代理类如下: pack ... -
Android中PopupWindow的用法(位置、动画、焦点)
2012-10-12 14:12 11522在Android中有很多级别的Window,不同级别的Wind ... -
【转】Android根据分辨率进行单位转换-(dp,sp转像素px)
2012-10-11 09:18 27133Android系统中,默认的单位是像素(px)。也就是说,在没 ... -
GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析
2012-09-23 11:49 11543在手机通过osmdroid调用离线地图必须放在 ... -
GIS的学习(二十八)Osmdroid相关的开源项目
2012-09-23 11:31 25429osm 数据格式(openstreet map)与Ro ... -
GIS的学习(二十七)通过geoserver的georss访问第三方地图
2012-09-23 00:34 3601在geoserver中如果想调用第三方地图可以采 ... -
android中使用 定时更新界面定时器Timer的使用
2012-09-22 22:09 25522handler的使用 一、Handler的定义: ... -
【转】Android应用程序的自动更新升级(自身升级、通过tomcat) .
2012-09-16 15:03 7363http://blog.csdn.net/mu0206mu/a ... -
GIS的学习(二十七)OGC 的WCS WFS 及WMS 服务
2012-09-11 22:22 12120http://www.gisall.com/?6678/v ... -
GIS的学习(二十六)geotools 使用 部分代码总结
2012-09-11 22:20 5730前段时间的一个项目 本来用ae完成了种种的 查询,空间分析等等 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9710官方geoserver中WMS服务中几种操作的API的详细说明 ... -
GIS的学习(二十四)android异步调用geoserver wms中的地图
2012-09-10 17:38 8169在geoserver的客户端通过wms的GetMap实现 ... -
GIS的学习(二十三)geoserver中CQL和ECQL的使用
2012-09-10 16:29 6633以下引用自官方文档: CQL and ECQL¶ CQ ... -
GIS的学习(二十二)osmdroid中添加縮放控件
2012-09-06 23:09 2787package com.geoserver.osmdroid; ... -
GIS的学习(二十一)在osmdroid 地图中添加marker 并添加事件
2012-09-06 22:27 6625我有 osmdroid,overlayswithf ... -
GIS的学习(二十)基于Geoserver的WFS服务与Openlayers实现地理查询
2012-08-30 18:48 11408基于Geoserver发布的wfs服务,与Openlayers ... -
GIS的学习(十九)Geoserver使用添加,删除,查询地图中的POI
2012-08-30 17:28 10354在geoserver自定义的地图中通过geoserver ...
相关推荐
这种格式的词典文件可以直接在灵格斯辞典软件中使用,提供全功能的查词、发音、例句演示等功能,适合需要专业级翻译和学习的用户。使用ld2格式的优点在于可以充分利用灵格斯的高级功能,如词汇记忆、智能提示等,...
灵格斯+牛津词典 lingoes 和 牛津词典 开发工具
jieba,一个流行的中文分词库,是此类任务的理想工具。本主题主要关注如何利用jieba与特定词典,包括两个灵格斯词典、会计科目词典、会计术语词典以及连词词典,来提升年报分析的准确性与效率。 首先,jieba是...
灵格斯词霸 x64 - 简体中文版(.exe) + 牛津高阶英汉双解词典
经典词典 翻译软件打包(有道,灵格斯..) 正在使用 很好的
jieba是一个广泛使用的中文分词库,它支持自定义词典,因此我们可以将这五个词典整合进jieba,提升分词效果,尤其对于处理年报中复杂的会计语言和专业术语。 总的来说,这些词典为年报可读性分析提供了强大的支持,...
综上所述,灵格斯词霸2.5.3绿色便携版不仅仅是一款翻译软件,它更是一个全方位的语言学习伴侣。它具备强大的词典资源,丰富多样的功能,以及极为方便的携带性,这些都是现代翻译软件中难得一见的特点。无论是商务...
很好的实用的词典可以进行各种计算语言的翻译描述的行了吧 老大
总的来说,这个简单的中英文词典项目为初学者提供了一个全面实践Java基础知识的机会,涵盖了从编程基础到数据库交互,再到GUI设计和数据结构等多个重要领域,是提升编程技能的好教材。通过实际操作,学习者不仅能...
程序读取源文件路径下的txt格式词典文件,若没有就创建一个。词典文件存储方式为“英文单词 中文单词”,每行仅有一对中英释义。程序会根据用户的选择进入相应的功能模块,并显示相应的操作提示。当添加的单词已存在...
这是网络上搜集整理的一个中英文翻译词典的数据库。一共有36672条中英文词语对照表。可以用来做中英文翻译软件。有这方面需要的。可以下载。
Lingoes 灵格斯词霸 2.9.0 是一个历时一年全新重构的版本,我们从底层开始重写了所有代码,优化的架构,64位代码的支持,令软件运行更快、更稳、更兼容。灵格斯也是唯一支持最新版本的 IE10, Chrome 25、firefox 19...
综上所述,灵格斯词霸2.9.2 x64 简体中文版是一个功能全面且强大的翻译工具,特别适合需要在64位环境下进行多语种学习和工作的用户。其丰富的词典资源、高效的翻译功能以及便捷的同步服务,为用户提供了高效的语言...
本项目涉及的主题是“中英文切换”与“自定义翻译词典”,这是一个典型的本地化(Localization)和文本处理任务,对于创建多语言支持的应用程序至关重要。下面将详细解释这些知识点。 首先,**中英文切换**是为用户...
灵格斯词霸是一款强大的翻译和词典软件,专为学习者和专业人士设计。这款2.9.2简体中文版提供了丰富的语言资源和便捷的翻译功能,旨在帮助用户快速理解并掌握各种词汇。在这款软件中,我们可以找到以下几个关键知识...
它提供了一个简单的中英文词典查询应用程序的基础框架。它展示了如何使用Java编程语言和Swing库来创建图形用户界面,并利用MySQL数据库来存储和查询数据。具体来说,这段代码的开发意义包括:学习如何创建基本的图形...
4. **机器翻译**:在翻译过程中,情感词典能帮助保留原文的情感色彩,提高翻译的准确性和自然度。 5. **文本生成**:在生成有情感色彩的文本时,如故事或评论,情感词典可以指导选择恰当的词汇来表达特定情感。 6....
【标题】"中英文词典.zip"所包含的项目是一个实现了中英文互译功能的代码库,这在学习、教学和日常使用中非常实用。它可能是由一系列编程语言(如Python、JavaScript或Java)编写的,旨在帮助用户查找并理解词汇的...
SAP中英文词典,SAP术语英汉对照表 中英文对照参考 ERP英文学习参考
灵格斯俄汉语言包,方便俄语和汉语之间词典互相查找。对俄语专业的人提供便利。