android采用语音文件形式让TextView和EditText发出声音
2014-01-10 15:10
453 查看
让TextView和EditText发出声音在拨打电话等应用中很常见,如果采用TTS语音引擎未免太麻烦!所以可以采用MediaPlayer播放语音文件的形式
下面是关键代码:
关键变量定义
主要代码
下面是关键代码:
关键变量定义
private TextView numInput; private int length = 0; //当前字符串长度 private int beforeLength = 0;//上一次字符串长度 private MediaPlayer mediaPlayer; private ArrayList<TextWatcher> mListeners = null; EditTextWatchTEL watch;初始化使用方法
watch = new EditTextWatchTEL(); numInput.addTextChangedListener(watch); if (mListeners == null) { mListeners = new ArrayList<TextWatcher>(); } mListeners.add(watch);
主要代码
private class EditTextWatchTEL implements TextWatcher { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (length > 0) { if (beforeLength <= length) { beforeLength = length; List<String> list = new ArrayList<String>(); for(int i=0;i<10;i++){ list.add(String.valueOf(i)); } String num = numInput.getText().toString().substring(beforeLength - 1); if(list.contains(num)) { int value = Integer.parseInt(num); switch (value) { case 0: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } //R.raw.zero 为raw文件夹的语音文件 ,以下同上 mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.zero); mediaPlayer.start(); break; case 1: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.one); mediaPlayer.start(); break; case 2: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.two); mediaPlayer.start(); break; case 3: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.three); mediaPlayer.start(); break; case 4: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.four); mediaPlayer.start(); break; case 5: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.five); mediaPlayer.start(); break; case 6: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.six); mediaPlayer.start(); break; case 7: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.seven); mediaPlayer.start(); break; case 8: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.eight); mediaPlayer.start(); break; case 9: if(mediaPlayer!= null){ //一定要清空播放器资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null ; } mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.nine); mediaPlayer.start(); break; default: break; } } } else { beforeLength = length; } } } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { length = numInput.getText().length(); } } //移除监听 public void removeTextChangedListener(TextWatcher watcher) { if (mListeners != null) { int i = mListeners.indexOf(watcher); if (i >= 0) { mListeners.remove(i); } } numInput.removeTextChangedListener(watcher); } @Override protected void onDestroy() { removeTextChangedListener(watch); super.onDestroy(); }记录与分享,让你我共成长!欢迎查看我的其他博客;我的博客地址:http://blog.csdn.net/caicongyang
相关文章推荐
- android采用MediaPlayer监听EditText实现语音播报手机号码(阿拉伯数字)
- Android组件复习之基本组件01——TextView与Edittext的用法
- Android中新建文件并将EditText中的内容保存其中
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- android:hint属性对TextView(或者EditText)的影响--源码分析
- Android UI 控件--(multi)AutoCompleteTextView、查看原文件、修改颜色
- Android限定EditText的输入类型为数字或者英文(包括大小写),EditText,TextView只能输入两位小数
- Android 仿QQ控件变色的EditText/TextView
- Android控件TextView显示html文件中的图片
- android textview和edittext中插入表情
- Android—EditText/TextView使用SpannableString显示复合文本
- Android给TextView,EditText等设置边框
- android EditText+ListView的组合(类似于AutoCompleteTextView)
- Android系统控件TextView与EditText
- TextView和EditText的android:ellipsize属性的含义
- java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
- Android中TextView和EditView经常使用属性设置
- Android组件复习之基本组件01——TextView与Edittext的用法
- Android TextView(EditView)文字底部或者中间 加横线
- Android EditText/TextView使用SpannableString显示复合文本