当前位置: 代码迷 >> Android >> android tts 发声的事例
  详细解决方案

android tts 发声的事例

热度:325   发布时间:2016-05-01 20:39:50.0
android tts 发声的例子

?

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

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

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

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




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

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

?

/********************************************************************************************
?* author:[email protected]?[email protected]?????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??
?* E-mail:[email protected] ??? ??? ??? ??? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?
?*?http://blog.csdn.net/conowen?? ??? ??? ??? ??? ??? ??? ??? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。 ? ???

?********************************************************************************************/


1、XML文档简单解说:

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

?

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

?

模型:

[html]?view plaincopy
  1. <?文档标签>??
  2. <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>??
  3. ??
  4. <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>??
  5. ??
  6. <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>??
  7. <文档标签/>??

?

?

????? 在上面的 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、Simple?API?for 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 plaincopy
  1. /*author:conowen?
  2. ?*?date:2012.4.1?
  3. ?*/??
  4. package?com.conowen.Dictionary;??
  5. ??
  6. import?android.app.Activity;??
  7. import?android.content.res.XmlResourceParser;??
  8. import?android.os.Bundle;??
  9. import?android.view.View;??
  10. import?android.view.View.OnClickListener;??
  11. import?android.widget.Button;??
  12. import?android.widget.EditText;??
  13. import?android.widget.TextView;??
  14. ??
  15. public?class?DictionaryActivity?extends?Activity?{??
  16. ????String?input?=?null;??
  17. ????String?match?=?null;??
  18. ????EditText?et?=?null;??
  19. ????Button?search?=?null;??
  20. ????Button?del?=?null;??
  21. ????TextView?display?=?null;??
  22. ??
  23. ????/**?Called?when?the?activity?is?first?created.?*/??
  24. ????@Override??
  25. ????public?void?onCreate(Bundle?savedInstanceState)?{??
  26. ????????super.onCreate(savedInstanceState);??
  27. ????????setContentView(R.layout.main);??
  28. ????????et?=?(EditText)?findViewById(R.id.et);??
  29. ????????search?=?(Button)?findViewById(R.id.search);??
  30. ????????del?=?(Button)?findViewById(R.id.del);??
  31. ????????display?=?(TextView)?findViewById(R.id.tv);??
  32. ??
  33. ????????search.setOnClickListener(new?OnClickListener()?{??
  34. ??
  35. ????????????@Override??
  36. ????????????public?void?onClick(View?v)?{??
  37. ????????????????//?TODO?Auto-generated?method?stub??
  38. ????????????????input?=?et.getText().toString();??
  39. ????????????????//?现在工程的res目录下面新建一个xml文件夹,把cet4.xml拖进去??
  40. ????????????????XmlResourceParser?xrp?=?getResources().getXml(R.xml.cet4);//?定义一个XML资源解析器??
  41. ??
  42. ????????????????try?{??
  43. ????????????????????StringBuilder?strbuilder?=?new?StringBuilder("");??
  44. ????????????????????while?(xrp.getEventType()?!=?XmlResourceParser.END_DOCUMENT)?{//?当还没到XML文档结束时??
  45. ????????????????????????if?(xrp.getEventType()?==?XmlResourceParser.START_TAG)?{//?当遇到开始标签时,包括子标签和子标签里面的所有标签??
  46. ????????????????????????????String?tagname?=?xrp.getName();//?获取标签的名字??
  47. ??
  48. ????????????????????????????if?(tagname.equals("word"))?{//?取出单词??
  49. ????????????????????????????????match?=?xrp.nextText();//?读取标签里面内容,也就是这个单词??
  50. ??
  51. ????????????????????????????????if?(match.equals(input))?{//?如果取出来的这个单词和输入的单词相等??
  52. ????????????????????????????????????xrp.next();//?读取这个下一个标签,也就是<trans>翻译??
  53. ????????????????????????????????????strbuilder.append(xrp.nextText());//?取出翻译??
  54. ????????????????????????????????????display.setText(strbuilder);//?显示翻译??
  55. ????????????????????????????????????????????????????????????????????????break;??
  56. ????????????????????????????????}??
  57. ??
  58. ????????????????????????????}??
  59. ??
  60. ????????????????????????}??
  61. ????????????????????????xrp.next();//?读取下一个标签??
  62. ??
  63. ????????????????????}??
  64. ??
  65. ????????????????}?catch?(Exception?e)?{??
  66. ????????????????????//?TODO:?handle?exception??
  67. ????????????????}??
  68. ??
  69. ????????????}??
  70. ????????});??
  71. ????????del.setOnClickListener(new?OnClickListener()?{??
  72. ??
  73. ????????????@Override??
  74. ????????????public?void?onClick(View?v)?{??
  75. ????????????????//?TODO?Auto-generated?method?stub??
  76. ????????????????display.setText("");??
  77. ????????????????et.setText("");??
  78. ??
  79. ????????????}??
  80. ????????});??
  81. ??
  82. ????}??
  83. } ?

?

  相关解决方案