我想將TextToSpeech引擎的輸出寫入我的應用的緩存目錄。爲了讓TTS寫在那裏,我首先必須授予它這樣做的權限。但我不知道如何。我明白,通常可以通過交付FileDescriptor
來解決這些問題,因此可以授予訪問特定文件的權限。但是我不能用TTS做到這一點,因爲TextToSpeech.synthesizeToFile方法只接受文件路徑作爲字符串,沒有FileDescriptor
。那麼該怎麼辦?我如何允許TTS將文件寫入我的應用程序的目錄?
爲了使我的觀點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
[This thread](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