android tts 发声的例子
“设置”------>“语音输入与输出”------> “文字转语音设置 ”里面选项选择的默认引擎。
假若勾选了“总是使用我的设置”,系统就会以这里的设置为最高优先级,代码里面的设置无效。
这里可以查看是否有发声的语音包。
Android学习笔记(16)————Android的XML解析之pull方式
分类:Android学习笔记 2012-04-01 19:43 3345人阅读 评论(0) 收藏 举报/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
*http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/
1、XML文档简单解说:
首先先看一个XML文档的截取部分:
[html] view plain copy- <wordbook>
- <item><word>cupboard</word>
- <trans><![CDATA[n.食橱;碗柜]]></trans>
- <phonetic><![CDATA[['kʌbəd]]]></phonetic>
- <tags>CET4-EASY</tags>
- </item>
- <item><word>a</word>
- <trans><![CDATA[art.一;任一;每一
- a:朱
- FORMA:普惠证|普惠制产地证|惠制原产地证明书
- manya:许多的|一个又一个的|很多]]></trans>
- <phonetic><![CDATA[[ei]]]></phonetic>
- <tags>CET4-EASY</tags>
- </item>
- <item><word>abandon</word>
- <trans><![CDATA[n.狂热;放任
- vt.遗弃;放弃
- abandon:放弃|确认期权失效|委付
- Callabandon:呼叫中途挂机
- abandonv:放弃]]></trans>
- <phonetic><![CDATA[[ə'bændən]]]></phonetic>
- <tags>CET4-EASY</tags>
- </item>
- <item><word>ability</word>
- <trans><![CDATA[n.能力,能耐;才能
- Ability:力|能力|本领
- encapsulatingability:包被抑制性
- limitedability:有限能力]]></trans>
- <phonetic><![CDATA[[ə'biliti]]]></phonetic>
- <tags>CET4-EASY</tags>
- </item>
- <prename="code"class="html"></wordbook>
模型:
[html] view plain copy- <文档标签>
- <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>
- <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>
- <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>
- <文档标签/>
在上面的 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- /*author:conowen
- *date:2012.4.1
- */
- packagecom.conowen.Dictionary;
- importandroid.app.Activity;
- importandroid.content.res.XmlResourceParser;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.EditText;
- importandroid.widget.TextView;
- publicclassDictionaryActivityextendsActivity{
- Stringinput=null;
- Stringmatch=null;
- EditTextet=null;
- Buttonsearch=null;
- Buttondel=null;
- TextViewdisplay=null;
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- et=(EditText)findViewById(R.id.et);
- search=(Button)findViewById(R.id.search);
- del=(Button)findViewById(R.id.del);
- display=(TextView)findViewById(R.id.tv);
- search.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- input=et.getText().toString();
- //现在工程的res目录下面新建一个xml文件夹,把cet4.xml拖进去
- XmlResourceParserxrp=getResources().getXml(R.xml.cet4);//定义一个XML资源解析器
- try{
- StringBuilderstrbuilder=newStringBuilder("");
- while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){//当还没到XML文档结束时
- if(xrp.getEventType()==XmlResourceParser.START_TAG){//当遇到开始标签时,包括子标签和子标签里面的所有标签
- Stringtagname=xrp.getName();//获取标签的名字
- if(tagname.equals("word")){//取出单词
- match=xrp.nextText();//读取标签里面内容,也就是这个单词
- if(match.equals(input)){//如果取出来的这个单词和输入的单词相等
- xrp.next();//读取这个下一个标签,也就是<trans>翻译
- strbuilder.append(xrp.nextText());//取出翻译
- display.setText(strbuilder);//显示翻译
- break;
- }
- }
- }
- xrp.next();//读取下一个标签
- }
- }catch(Exceptione){
- //TODO:handleexception
- }
- }
- });
- del.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- display.setText("");
- et.setText("");
- }
- });
- }
- }
更多相关文章
- 你不知道的Runnable接口,深度解析Runnable接口
- android对html支持接口总结
- 【Android】TextView的文字长度测量及各种padding解析
- Android(安卓)AsyncTask完全解析
- Android(安卓)XML解析学习——Dom方式
- 《深入解析Android(安卓)5.0系统》——导读
- 解析Android中的XML
- [置顶] [小代码]连接MySQL数据库(android,php,MySQL)
- Android事件总线(一)EventBus3.0用法全解析