在android中要下载相关的发音的数据的,并不是说,我android带了tts发声包就可以发声了。不是这样的。

“设置”------>“语音输入与输出”------> “文字转语音设置 ”里面选项选择的默认引擎。

假若勾选了“总是使用我的设置”,系统就会以这里的设置为最高优先级,代码里面的设置无效。

这里可以查看是否有发声的语音包。




Android学习笔记(16)————Android的XML解析之pull方式

分类:Android学习笔记 3345人阅读 评论(0) 收藏 举报

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
*http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。

********************************************************************************************/


1、XML文档简单解说:

首先先看一个XML文档的截取部分:

[html] view plain copy
  1. <wordbook>
  2. <item><word>cupboard</word>
  3. <trans><![CDATA[n.食橱;碗柜]]></trans>
  4. <phonetic><![CDATA[['kʌbəd]]]></phonetic>
  5. <tags>CET4-EASY</tags>
  6. </item>
  7. <item><word>a</word>
  8. <trans><![CDATA[art.一;任一;每一
  9. a:朱
  10. FORMA:普惠证|普惠制产地证|惠制原产地证明书
  11. manya:许多的|一个又一个的|很多]]></trans>
  12. <phonetic><![CDATA[[ei]]]></phonetic>
  13. <tags>CET4-EASY</tags>
  14. </item>
  15. <item><word>abandon</word>
  16. <trans><![CDATA[n.狂热;放任
  17. vt.遗弃;放弃
  18. abandon:放弃|确认期权失效|委付
  19. Callabandon:呼叫中途挂机
  20. abandonv:放弃]]></trans>
  21. <phonetic><![CDATA[[ə'bændən]]]></phonetic>
  22. <tags>CET4-EASY</tags>
  23. </item>
  24. <item><word>ability</word>
  25. <trans><![CDATA[n.能力,能耐;才能
  26. Ability:力|能力|本领
  27. encapsulatingability:包被抑制性
  28. limitedability:有限能力]]></trans>
  29. <phonetic><![CDATA[[ə'biliti]]]></phonetic>
  30. <tags>CET4-EASY</tags>
  31. </item>
  32. <prename="code"class="html"></wordbook>
  

模型:

[html] view plain copy
  1. <文档标签>
  2. <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>
  3. <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>
  4. <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>
  5. <文档标签/>

  

在上面的 XML 中,文档标签是 <wordbook>。文档中的其他的所有子标签都被包含在文档<bookstore> 中。文档标签 <wordbook> 有四个 <item>子标签。每一个 <item>子标签有四个节点:<word>, <trans>, <phonetic> 以及<tags>节点,其中每个节点都包含这个节点的内容。

注意:标签里面的str内容,如果是换行的,解析xml文件之后,打印出来的也是换行的

XML文件下载地址:http://ishare.iask.sina.com.cn/f/20283647.html

2、Android平台的XML解析方案:

Android平台上可以使用以下三种XML解析方式:

2.1、SimpleAPIfor XML(SAX)

SAX解析方式是基于事件驱动的。当读到文档标签的开始或者结束时,会有相应的事件,当读到一个子节点的开始标签或者结束标签时也会有相应的事件。当读到某一个子节点的其中一个节点时也会有相应的事件。由于Android平台的事件驱动是基于回调函数的,也就是说遇到上述事件时,会实现一个回调函数的接口。

2.2、Document Object Model(DOM)

DOM解析XML时,会把整个XML文档视作一个节点树,直接把整个节点树读取到内存里面,再进行解析,这样一来优点就是操作简单方便,但是缺点就是对于大体积的XML文档,解析起来机会很慢,而且很耗费资源。

2.3、Android附带的pull解析器

Pull方基本与SAX一样

简而言之,对于大体积的XML文件,最好选用SAX或者Pull方式解析,对于小体积的XML文档,可以选择DOM解析。

3、Pull解析方式详解

注:以下所说的标签包括子标签和子标签里面的所有标签

Pull解析的相关方法:

XmlResourceParser xrp;//定义一个XML资源解析器

XmlResourceParser.START_DOCUMENT 遇到文档标签的开始

XmlResourceParser.END_DOCUMENT 遇到文档标签的结束

XmlPullParser.START_TAG: 遇到标签的开始 XmlPullParser.END_TAG:遇到标签的结束xrp.getName()获取标签的名称xrp.nextText();获取标签里面的内容(str)(不是xrp.gettext();)xrp.next();继续读取下一个标签

xrp.nextTag();继续读取下一个标签,和next()基本 一样

下面写一个解析"英语词典.XML",来实现一个android 字典程序。详细解说可以看注释。

效果图:

[java] view plain copy
  1. /*author:conowen
  2. *date:2012.4.1
  3. */
  4. packagecom.conowen.Dictionary;
  5. importandroid.app.Activity;
  6. importandroid.content.res.XmlResourceParser;
  7. importandroid.os.Bundle;
  8. importandroid.view.View;
  9. importandroid.view.View.OnClickListener;
  10. importandroid.widget.Button;
  11. importandroid.widget.EditText;
  12. importandroid.widget.TextView;
  13. publicclassDictionaryActivityextendsActivity{
  14. Stringinput=null;
  15. Stringmatch=null;
  16. EditTextet=null;
  17. Buttonsearch=null;
  18. Buttondel=null;
  19. TextViewdisplay=null;
  20. /**Calledwhentheactivityisfirstcreated.*/
  21. @Override
  22. publicvoidonCreate(BundlesavedInstanceState){
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. et=(EditText)findViewById(R.id.et);
  26. search=(Button)findViewById(R.id.search);
  27. del=(Button)findViewById(R.id.del);
  28. display=(TextView)findViewById(R.id.tv);
  29. search.setOnClickListener(newOnClickListener(){
  30. @Override
  31. publicvoidonClick(Viewv){
  32. //TODOAuto-generatedmethodstub
  33. input=et.getText().toString();
  34. //现在工程的res目录下面新建一个xml文件夹,把cet4.xml拖进去
  35. XmlResourceParserxrp=getResources().getXml(R.xml.cet4);//定义一个XML资源解析器
  36. try{
  37. StringBuilderstrbuilder=newStringBuilder("");
  38. while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){//当还没到XML文档结束时
  39. if(xrp.getEventType()==XmlResourceParser.START_TAG){//当遇到开始标签时,包括子标签和子标签里面的所有标签
  40. Stringtagname=xrp.getName();//获取标签的名字
  41. if(tagname.equals("word")){//取出单词
  42. match=xrp.nextText();//读取标签里面内容,也就是这个单词
  43. if(match.equals(input)){//如果取出来的这个单词和输入的单词相等
  44. xrp.next();//读取这个下一个标签,也就是<trans>翻译
  45. strbuilder.append(xrp.nextText());//取出翻译
  46. display.setText(strbuilder);//显示翻译
  47. break;
  48. }
  49. }
  50. }
  51. xrp.next();//读取下一个标签
  52. }
  53. }catch(Exceptione){
  54. //TODO:handleexception
  55. }
  56. }
  57. });
  58. del.setOnClickListener(newOnClickListener(){
  59. @Override
  60. publicvoidonClick(Viewv){
  61. //TODOAuto-generatedmethodstub
  62. display.setText("");
  63. et.setText("");
  64. }
  65. });
  66. }
  67. }

更多相关文章

  1. 你不知道的Runnable接口,深度解析Runnable接口
  2. android对html支持接口总结
  3. 【Android】TextView的文字长度测量及各种padding解析
  4. Android(安卓)AsyncTask完全解析
  5. Android(安卓)XML解析学习——Dom方式
  6. 《深入解析Android(安卓)5.0系统》——导读
  7. 解析Android中的XML
  8. [置顶] [小代码]连接MySQL数据库(android,php,MySQL)
  9. Android事件总线(一)EventBus3.0用法全解析

随机推荐

  1. Android(安卓)Studio中src/main/res/valu
  2. 2018/8/13
  3. Android(安卓)日历提供器(二)
  4. android APP 获得system权限
  5. android 权限定义的文件,位置
  6. Android,View设置margin
  7. Android(安卓)定时任务
  8. ubuntu 10.04 Android(安卓)编译环境搭建
  9. composer、接口与抽象类学习小结
  10. Android的数据存储