Обратный вызов Android TTS onUtteranceCompleted не вызывается

По умолчанию JVM использует ограниченное пространство "кучи". Предел является зависящей от реализации JVM, и не ясно, какую JVM Вы используете. На ОС кроме Windows 32-разрядной JVM Sun на машине с 2 Гбитами или больше будет использовать максимальный размер "кучи" по умолчанию 1/4 физической памяти, или 512 Мбит в Вашем случае. Однако значение по умолчанию для "клиентского" режима JVM является максимальным размером "кучи" на только 64 Мбита, который может быть тем, с чем Вы столкнулись. JVM другого поставщика может выбрать различные значения по умолчанию.

, Конечно, можно определить предел "кучи" явно с -Xmxm опция к java, где число мегабайтов для "кучи".

Как приблизительный подсчет, Ваша хэш-таблица должна только использовать приблизительно 16 Мбит, таким образом, должны быть некоторые другие большие объекты на "куче". Если бы Вы могли бы использовать Comparable, вводят TreeMap, который сохранил бы некоторую память.

См. "Эргономика в 5,0 JVM" для получения дополнительной информации.

15
задан Charles 1 January 2012 в 20:49
поделиться

1 ответ

в случае, если кто-либо все еще находит это трудным

Фрагмент кода

textToSpeech=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
    @Override
    public void onInit(int status) {
        if (status==TextToSpeech.SUCCESS){
            int result=textToSpeech.setLanguage(Locale.ENGLISH);

            if (result==TextToSpeech.LANG_MISSING_DATA||result==TextToSpeech.LANG_NOT_SUPPORTED){
                Log.i("TextToSpeech","Language Not Supported");
            }

            textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                @Override
                public void onStart(String utteranceId) {
                    Log.i("TextToSpeech","On Start");
                }

                @Override
                public void onDone(String utteranceId) {
                    Log.i("TextToSpeech","On Done");
                }

                @Override
                public void onError(String utteranceId) {
                    Log.i("TextToSpeech","On Error");
                }
            });

        }else {
            Log.i("TextToSpeech","Initialization Failed");
        }
    }
});

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        textToSpeech.speak(text,TextToSpeech.QUEUE_FLUSH,null,TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED);
    }
1
ответ дан 1 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: