0
我正在尝试创建一个文本到语音应用程序,该应用程序会在应用程序暂停时以逗号的形式记住最后一句或部分句子。以下是我的代码。文本到语音Android
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pitch = (EditText) findViewById(R.id.pitch);
words = (EditText) findViewById(R.id.wordsToSpeak);
words.setText("This message is intended only for the use of the individual or entity to which it is addressed and may contain information that is privileged, confidential or exempt from disclosure by law.");
speakBtn = (Button) findViewById(R.id.speak);
// Check to be sure that TTS exists and is okay to use
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, REQ_TTS_STATUS_CHECK);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_TTS_STATUS_CHECK) {
switch (resultCode) {
case TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:
// TTS is up and running
mTts = new TextToSpeech(this, this);
Log.v(TAG, "Pico is installed okay");
break;
case TextToSpeech.Engine.CHECK_VOICE_DATA_BAD_DATA:
case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA:
case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_VOLUME:
// missing data, install it
Log.v(TAG, "Need language stuff: " + resultCode);
Intent installIntent = new Intent();
installIntent
.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
break;
case TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL:
default:
Log.e(TAG, "Got a failure. TTS apparently not available");
}
} else {
// Got something else
}
}
@Override
public void onInit(int status) {
// Now that the TTS engine is ready, we enable the button
if (status == TextToSpeech.SUCCESS) {
speakBtn.setEnabled(true);
mTts.setOnUtteranceCompletedListener(this);
}
}
public void doSpeak(View view) {
mTts.setPitch(new Float(pitch.getText().toString()));
StringTokenizer st = new StringTokenizer(words.getText().toString(),
",.");
while (st.hasMoreTokens()) {
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,
String.valueOf(uttCount++));
mTts.speak(st.nextToken(), TextToSpeech.QUEUE_ADD, params);
}
// mTts.speak(words.getText().toString(), TextToSpeech.QUEUE_ADD, null);
};
@Override
public void onPause() {
super.onPause();
// if we're losing focus, stop talking
if (mTts != null)
mTts.stop();
}
@Override
public void onDestroy() {
super.onDestroy();
mTts.shutdown();
}
@Override
public void onUtteranceCompleted(String utteranceId) {
Log.v(TAG, "Got completed message for uttId: " + utteranceId);
lastUtterance = Integer.parseInt(utteranceId);
}
}
我能够得到获得了Android说话和跟踪令牌,它最后的评价。但是,当您按下speakBtn时,我不知道如何恢复最后一次停止的位置。 如果所有的标记没有被成功地读出来,是否还有回到标记器中的某个标记?