level 9
EIIE♬
楼主
是什么问题?
朗读可以,保存就出错。
public class MainActivity extends Activity {
private EditText mEditText = null;
private Button readButton = null;
private Button saveButton = null;
private CheckBox mCheckBox = null;
private TextToSpeech mTextToSpeech=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText = (EditText)this.findViewById(R.id.edittext);
readButton = (Button)this.findViewById(R.id.rbutton);
saveButton = (Button)this.findViewById(R.id.sbutton);
mCheckBox = (CheckBox)this.findViewById(R.id.checkbox);
//实例并初始化TTS对象
mTextToSpeech=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS) {
//设置朗读语言
int supported=mTextToSpeech.setLanguage(Locale.US);
if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
Toast.makeText(MainActivity.this, "不支持当前语言!", 1).show();
}
}
}
});
//朗读监听按钮
readButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//朗读EditText里的内容
mTextToSpeech.speak(mEditText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
});
//保存按钮监听
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//将EditText里的内容保存为语音文件
int r = mTextToSpeech.synthesizeToFile(mEditText.getText().toString(), null, "/mnt/sdcard/speak.wav");
if (r==TextToSpeech.SUCCESS) {
Toast.makeText(MainActivity.this, "保存成功!", 1).show();
}
}
});
//EditText内容变化监听
mEditText.addTextChangedListener(mTextWatcher);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mTextToSpeech!=null) {
mTextToSpeech.shutdown();//关闭TTS
}
}
private TextWatcher mTextWatcher = new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
//如果是边写边读
if(mCheckBox.isChecked()&&(s.length()!=0)){
//获得EditText的所有内容
String t = s.toString();
mTextToSpeech.speak(t.substring(s.length()-1), TextToSpeech.QUEUE_FLUSH, null);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
};
}
2016年03月25日 13点03分
1
朗读可以,保存就出错。
public class MainActivity extends Activity {
private EditText mEditText = null;
private Button readButton = null;
private Button saveButton = null;
private CheckBox mCheckBox = null;
private TextToSpeech mTextToSpeech=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText = (EditText)this.findViewById(R.id.edittext);
readButton = (Button)this.findViewById(R.id.rbutton);
saveButton = (Button)this.findViewById(R.id.sbutton);
mCheckBox = (CheckBox)this.findViewById(R.id.checkbox);
//实例并初始化TTS对象
mTextToSpeech=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS) {
//设置朗读语言
int supported=mTextToSpeech.setLanguage(Locale.US);
if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
Toast.makeText(MainActivity.this, "不支持当前语言!", 1).show();
}
}
}
});
//朗读监听按钮
readButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//朗读EditText里的内容
mTextToSpeech.speak(mEditText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
});
//保存按钮监听
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//将EditText里的内容保存为语音文件
int r = mTextToSpeech.synthesizeToFile(mEditText.getText().toString(), null, "/mnt/sdcard/speak.wav");
if (r==TextToSpeech.SUCCESS) {
Toast.makeText(MainActivity.this, "保存成功!", 1).show();
}
}
});
//EditText内容变化监听
mEditText.addTextChangedListener(mTextWatcher);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mTextToSpeech!=null) {
mTextToSpeech.shutdown();//关闭TTS
}
}
private TextWatcher mTextWatcher = new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
//如果是边写边读
if(mCheckBox.isChecked()&&(s.length()!=0)){
//获得EditText的所有内容
String t = s.toString();
mTextToSpeech.speak(t.substring(s.length()-1), TextToSpeech.QUEUE_FLUSH, null);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
};
}