android tts 发声的例子

 

 
在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.   
  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 plain copy
  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 plain copy
  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. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值