TextToSpeech 엔진의 출력을 내 응용 프로그램의 캐시 디렉토리에 쓰고 싶습니다. TTS를 위해 거기에 글을 쓰려면 먼저 권한을 부여해야합니다. 하지만 어떻게해야할지 모르겠다. 정상적으로 이러한 문제는 FileDescriptor
을 넘겨서 해결할 수 있으므로 특정 파일에 대한 액세스 권한이 부여됩니다. TextToSpeech.synthesizeToFile 메서드는 파일 경로를 문자열로만 받아들이므로 TTS에서는이 작업을 수행 할 수 없습니다. FileDescriptor
. 그래서 뭐 할까? TTS가 내 앱 디렉토리에 파일을 쓸 수있게하려면 어떻게해야합니까?
TextToSpeech mTts = new new TextToSpeech(context, this);
mTts.synthesizeToFile(text, null, getCacheDir() + "/" + "speech.wav");
그리고 디버거 로그 :
08-20 14:46:11.257: ERROR/TtsService(336): Can't create
/data/data/com.myorg.myapp/cache/speech.wav due to exception java.io.IOException: Permission denied
[이 스레드] (http://groups.google.com/group/android-developers/browse_thread/thread/79c0c4d9399b38ac)는 'TextToSpeech.synthesizeToFile()'은 실제 휴대 전화가 아닌 AVD에서만 작동한다고 제안합니다. 이것은 이상합니다. 나는 이것이 실제로 사실인지 더 자세히 조사 할 것이다. – an00b
[이 스레드] (http://groups.google.com/group/android-developers/browse_thread/thread/d1365a29214b8cb3?fwc=1)는 'TextToSpeech.synthesizeToFile()'을 실제 장치. 그러나 어떻게 ??? – an00b
이것은 미친 짓이다. 나는 더 이상 java.io.IOException을 얻지 않고 SUCCESS 메시지 인'Synthesizing to/mnt/sdcard/test.wav'를 받는다.하지만 test.wav는 어디에도 없다. 파일 시스템 (물론/mnt/sdcard에 없다). 무슨 일이야? – an00b