Я хочу записать выходные данные механизма TextToSpeech в каталог кеша моего приложения. Чтобы TTS могла писать туда, я сначала должен дать ему разрешение на это. Но я не знаю как. Я понимаю, что обычно такие проблемы можно решить, передав FileDescriptor, тем самым дав разрешение на доступ к определенному файлу. Но я не могу сделать это с TTS, так как метод TextToSpeech.synthesizeToFile принимает путь к файлу только как строку, а не 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
TextToSpeech.synthesizeToFile()работает только с AVD, а не с реальными телефоны... Это странно. Я буду исследовать дальше, чтобы увидеть, действительно ли это так. - person an00b   schedule 13.10.2011TextToSpeech.synthesizeToFile()на реальном устройстве. Но как??? - person an00b   schedule 13.10.2011java.io.IOExceptionи вместо этого получать сообщение SUCCESSSynthesizing to /mnt/sdcard/test.wav, но этот файл test.wav нигде не находится в файловой системе (и определенно не в /mnt/sdcard). В чем дело? - person an00b   schedule 13.10.2011