1. 首先,我先把代码放到下面:

 package com.himi.speaker;

 import java.util.Locale;

 import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.speech.tts.TextToSpeech; public class MainActivity extends Activity implements OnClickListener { private Button btn_speak;
private EditText edit_input;
private TextToSpeech tts; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tts = new TextToSpeech(this, ttsInitListener);
edit_input = (EditText) findViewById(R.id.edit_input);
btn_speak = (Button) findViewById(R.id.btn_speak); btn_speak.setOnClickListener(this);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.version) {
Toast.makeText(getApplicationContext(), "这是首版本v1.0\n制作者:任逍遥",Toast.LENGTH_LONG).show();;
}
if (id == R.id.exit) {
finish();
}
return super.onOptionsItemSelected(item);
} public void onClick(View v) { if(edit_input.getText().length() >0 ) {
//朗诵输入文本
tts.speak(edit_input.getText().toString(), TextToSpeech.QUEUE_FLUSH,null ); }else {
tts.speak("Nothing input,Son of a bitch", TextToSpeech.QUEUE_FLUSH,null );
} } //实现这个接口,这是手机发声的朗诵引擎,就像汽车发动机一样,启动运行.用来前面初始化创建TextToSpeech对象的,绑定这个接口实现这个对象可以具备发声的能力
private TextToSpeech.OnInitListener ttsInitListener = new TextToSpeech.OnInitListener() {
public void onInit(int status) {
// 使用美式时区目前不支持中文语音数据库
Locale loc = new Locale("us", "", "");
// 判断是否安装了美式英文朗诵Text-to-Speech Library
if (tts.isLanguageAvailable(loc) == TextToSpeech.LANG_AVAILABLE) {
tts.setLanguage(loc);
} }
}; //OnUtteranceCompletedListener-----API15之后就废弃了 // private TextToSpeech.OnUtteranceCompletedListener ttsUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() {
//
// public void onUtteranceCompleted(String utteranceId) {
// // TODO 自动生成的方法存根
//
// }
// }; protected void OnDestory() {
tts.shutdown();
super.onDestroy(); } }

接着我附上activity_main.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.himi.speaker.MainActivity" > <EditText
android:id="@+id/edit_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="1"
android:hint="@string/input"/>
<Button
android:id="@+id/btn_speak"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/speak"/> </LinearLayout>

下图是在虚拟机上运行效果图的:

这里发现我在虚拟机上可以运行,比如输入"I love you",确实发出英文朗读,但是我把这段程序下载到手机真机上就不能实现朗诵了,

我猜想是真机没有安装这里的TextToSpeech Library这个语言数据库文件,后来我就修改了一段程序试着验证我的猜想:如下:

package com.himi.speaker;

import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.speech.tts.TextToSpeech; public class MainActivity extends Activity implements OnClickListener { private Button btn_speak;
private EditText edit_input;
private TextToSpeech tts; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tts = new TextToSpeech(this, ttsInitListener);
edit_input = (EditText) findViewById(R.id.edit_input);
btn_speak = (Button) findViewById(R.id.btn_speak); btn_speak.setOnClickListener(this);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.version) {
Toast.makeText(getApplicationContext(), "这是首版本v1.0\n制作者:任逍遥",Toast.LENGTH_LONG).show();;
}
if (id == R.id.exit) {
finish();
}
return super.onOptionsItemSelected(item);
} public void onClick(View v) { if(edit_input.getText().length() >0 ) {
//朗诵输入文本
tts.speak(edit_input.getText().toString(), TextToSpeech.QUEUE_FLUSH,null ); }else {
tts.speak("Nothing input,Son of a bitch", TextToSpeech.QUEUE_FLUSH,null );
} } //实现这个接口,这是手机发声的朗诵引擎,就像汽车发动机一样,启动运行.用来前面初始化创建TextToSpeech对象的,绑定这个接口实现这个对象可以具备发声的能力
private TextToSpeech.OnInitListener ttsInitListener = new TextToSpeech.OnInitListener() {
public void onInit(int status) {
// 使用美式时区目前不支持中文语音数据库
Locale loc = new Locale("us", "", "");
// 判断是否安装了美式英文朗诵Text-to-Speech Library
if (tts.isLanguageAvailable(loc) == TextToSpeech.LANG_AVAILABLE)
{
tts.setLanguage(loc);
}
else //如果我的手机没有安装语音数据,程序点击进入之后,就会自动结束
{
finish();
} }
}; //OnUtteranceCompletedListener-----API15之后就废弃了 // private TextToSpeech.OnUtteranceCompletedListener ttsUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() {
//
// public void onUtteranceCompleted(String utteranceId) {
// // TODO 自动生成的方法存根
//
// }
// }; protected void OnDestory() {
tts.shutdown();
super.onDestroy(); } }

事实上,我的在真机上,点击进入之后,确实是直接退出程序。

2. 于是,我在手机(小米3)中安装了:SpeechSynthesis Data这个语音数据,安装完了之后

进入:设置 / 全部设置 / 辅助功能 / 文字转语音(TTS)输出

设置完毕之后,手机即可发声.

Android(java)学习笔记58:Android 英文朗诵的更多相关文章

  1. Android(java)学习笔记117:英文朗诵android App编写实例

    1.首先,我先把代码放到下面: package com.himi.speaker; import java.util.Locale; import android.app.Activity; impo ...

  2. Android开发学习笔记-关于Android的消息推送以及前后台切换

    下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...

  3. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

  4. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例

    ---------------------------------------------------------------------------------------------------- ...

  5. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  6. Android:日常学习笔记(6)——探究活动(4)

    Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...

  7. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  8. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  9. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  10. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...

    下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...

随机推荐

  1. shell 操作环境

    一.路径与命令查找顺序 命令的运行程序可以这样看: 1.以相对/绝对的路径执行命令,例“/bin/ls”或“ls” 2.由alias乍到该命令来执行 3.由bash内置的(builtin)命令来执行 ...

  2. Web API 解决跨域问题

    一.跨域问题的由来 同源策略:出于安全考虑,浏览器会限制脚本中发起的跨站请求,浏览器要求JavaScript或Cookie只能访问同域下的内容. 正是由于这个原因,我们不同项目之间的调用就会被浏览器阻 ...

  3. UML-3-案例研究

    没有什么比恰当的举例更难的了.-----马克吐温

  4. python作业1.1,编写登录模块

    实现功能: 1.用户输入账户密码 2.验证账户是否存在于黑名单,如果存在于黑名单,则执行1,否则往下执行 3.验证用户名和密码. 3.1.如果验证成功,则打印欢迎信息并退出程序: 3.2.如果用户名存 ...

  5. (转)Shell——基本运算符

    Shell 基本运算符 原文:http://blog.csdn.net/sinat_36053757/article/details/70319481 Shell 和其他编程语言一样,支持多种运算符, ...

  6. IE6,IE7,IE8 css bug搜集及浏览器兼容性问题解决方法汇总

    断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1: ...

  7. 接收时间戳model [JsonConverter(typeof(UnixDateTimeConverter))]

    /// <summary>        /// 创建时间        /// </summary>        [JsonProperty("createtim ...

  8. 安装VS2013时,如何避开IE10的限制

    安装VS2013时,如何避开IE10的限制 VS就会告诉我们目前环境不适合安装VS2013,必须升级IE版本到IE10. 如果不想安装IE10,有没有办法呢? 答案肯定是有的. 将下面一段文字,储存为 ...

  9. 【路一直都在】----img标签垂直居中问题

    先上代码 .dianshang ul li a { height: 100px; vertical-align:middle; display: table-cell;        width: 1 ...

  10. 使用Gulp压缩HTML和CSS

    ---恢复内容开始--- 今天我么继续压缩,但是今天的压缩和之前的不同了!可以说是第二种方法吧! 今天用Gulp来压缩HTML和CSS! 1.首先我们先来安装GUlp:先安装全局gulp 2.然后是开 ...