Tôi đang phát triển một ứng dụng rất đơn giản tại đây. Nó dành cho con gái của tôi. Nó chỉ là một nút YES và NO lớn, vì vậy cô ấy có thể nhấn chúng khi được yêu cầu.Android không thừa nhận TTS Engine
Vâng ... Tôi đang sử dụng Engine SVTS Classic TTS.
Mọi thứ đều chạy trơn tru cho đến khi máy tính bảng của tôi nâng cấp lên ICS. Bây giờ, mỗi khi tôi chạy ứng dụng, nó sẽ mở ra thị trường yêu cầu tôi cài đặt TTS. Tôi nhấn "trở lại" và sau đó, ứng dụng của tôi nói. Đây là RẤT gây phiền nhiễu.
Đây là những gì Google API nói:
* Một tấm séc thành công sẽ được đánh dấu bằng một mã kết quả CHECK_VOICE_DATA_PASS, cho thấy thiết bị này đã sẵn sàng để nói chuyện, sau khi tạo đối tượng TextToSpeech của chúng tôi. Nếu không, chúng tôi cần cho người dùng biết để cài đặt dữ liệu cần thiết cho thiết bị để trở thành một máy nói chuyện đa ngôn ngữ! Việc tải xuống và cài đặt dữ liệu được thực hiện bằng cách kích hoạt ý định ACTION_INSTALL_TTS_DATA, sẽ đưa người dùng đến Android Market và sẽ cho phép cô ấy bắt đầu tải xuống. Việc cài đặt dữ liệu sẽ tự động diễn ra khi quá trình tải xuống hoàn tất. Dưới đây là một ví dụ về những gì thực hiện của bạn của onActivityResult() sẽ trông như thế: *
đây là mã của tôi:
public class yesOunoActivity extends Activity implements OnInitListener{
ImageView yes;
ImageView no;
public TextToSpeech tts;
private int MY_DATA_CHECK_CODE = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
tts = new TextToSpeech(this, this);
setContentView(R.layout.yesorno);
yes = (ImageView) findViewById(R.id.yes);
no = (ImageView) findViewById(R.id.no);
yes.setClickable(true);
yes.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent arg1) {
if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {
tts.speak("yes!", TextToSpeech.QUEUE_ADD, null);
}
return true;
}
});
no.setClickable(true);
no.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent arg1) {
if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {
//Intent myIntent = new Intent(v.getContext(), ParametrosActivity.class);
tts.speak("no!", TextToSpeech.QUEUE_ADD, null);
}
return true;
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
tts = new TextToSpeech(this, this);
} else {
// missing data, install it
//ATTENTION: BELOW THIS GIVES ME PROBLEMS SINCE IT OPENS MARKET
//AND I HAVE TO HIT THE BACK BUTTON, THEN, IT SPEAKS!
//BTW TTS ENGINE "IS" INSTALLED!!
Intent installIntent = new Intent();
installIntent
.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
} else if (status == TextToSpeech.ERROR) {
}
}
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
System.gc();
}
}
Nếu tôi loại bỏ khu vực này với "Chú ý" ở trên (kể từ khi tôi chắc chắn tôi có TTS cài đặt), nó hoạt động lần đầu tiên tôi chạy ứng dụng, nếu tôi rời khỏi ứng dụng và tôi mở lại nó, nó nói "nói không thành công: không bị ràng buộc với tts động cơ"
Nó giống như nó không tạo ra đối tượng TTS vì ứng dụng vẫn còn trong bộ nhớ.
Vì vậy, các bạn ... các bạn nghĩ sao tôi nên làm gì ??
Điều này khiến tôi phát điên và tôi thực sự cần giao tiếp với con gái của mình thông qua máy tính bảng!
Bất kỳ trợ giúp nào được đánh giá cao !!
@Carols Pereira - Bạn có thể giải quyết vấn đề này không.một người dùng đã báo cáo rằng họ đang gặp phải vấn đề tương tự mà bạn gặp phải, nhưng khi chúng tôi thử nghiệm nó trong trình mô phỏng, nó hoạt động tốt cho chúng tôi. Bạn có thể xác định nguyên nhân gốc rễ của vấn đề này không? Đó có phải là một lỗi trong svox? – aquero