Android 2.3
.it에서 동일한 코드를 사용해 보았는데 완벽하게 작동합니다. 내가 이미 Android 4.0
과 함께 사용했던 것을 기억합니다. Nexus 4 및 Nexus 7Android 4.4.2
onInit 메서드에서 애플리케이션을 호출하려고하지 않습니다. 누군가 나에게이 이유를 알거나 다른 구현 방법을 제안하겠습니까? 나는 이유를 알고하지 않습니다하지만 AsyncTask를을 시작하는 방법에 대한 호출을 제거, 모두 밖으로 일 :onInit은 Android 4.4.2에서 새로운 TextToSpeech 인스턴스를 만들 때 결코 발생하지 않습니다.
public class MyFragment extends Fragment implements TextToSpeech.OnInitListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_recognition, container, false);
return v;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// check for TTS data
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
}
@Override
public void onDetach() {
super.onDetach();
if(myTTS != null) {
myTTS.stop();
myTTS.shutdown();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// the user has the necessary data - create the TTS
myTTS = new TextToSpeech(getActivity(), this);
} else {
//no data - install it now
Intent installTTSIntent = new Intent();
installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installTTSIntent);
}
}
}
// setup TTS
public void onInit(int initStatus) {
// check for successful instantiation
// if (initStatus == TextToSpeech.SUCCESS) {
// if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE)
myTTS.setLanguage(Locale.ITALIAN);
// }
// else if (initStatus == TextToSpeech.ERROR) {
// Toast.makeText(this, "Sorry! Text To Speech failed...",
// Toast.LENGTH_LONG).show();
// }
speak("Sintesi Vocale Attiva");
}
private void speak(String speech) {
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true");
myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, hashMap);
}
}
logcat에서 무엇을 볼 수 있습니까? onActivityResult가 호출되는지 확인하기 위해 로깅을 추가 했습니까? 그렇지 않으면 TTS 객체가 초기화되지 않습니다. – brandall
예, onActivityResult가 호출되었습니다. TextToSpeech 개체가 초기화되었지만 OnInit이 호출되지 않았습니다. – INDAPP
초기화 상태 란 무엇입니까? 그걸 기록 했니? – brandall