#android
#Android
Вопрос:
я пытаюсь создать голосовое напоминание, которое запоминает текст, который нужно запомнить, и в то время, когда приложение преобразует текст, чтобы произнести его голосом, я сделал код напоминания, и я создаю другой класс extend broad cast receiver и сделал код для напоминания, чтобы оно срабатывало вовремя, но оно запускается, когдая заставляю его показывать тосты, но когда я пишу код речи в приемнике для запуска в установленное время, но это дает мне «принудительное закрытие приложения», не могли бы вы ответить мне, я написал это в onreceive, но это не работает
public class ReadyToSpeak extends BroadcastReceiver
{
VoiceAlert voicealert= new VoiceAlert();
@Override
public void onReceive(Context context, Intent intent){
// TODO Auto-generated method stub
Intent scheduledIntent = new Intent(context,VoiceAlert.class);
scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scheduledIntent);
Toast.makeText(context, "onresive", Toast.LENGTH_LONG).show();
// voicealert.speak();
voicealert.txs.speak("Hello", TextToSpeech.QUEUE_FLUSH, null);
}
}
Я повторил код заново и не сработал, и это то, что отображается в logcat
10-27 10:23:06.920: WARN/ KeyCharacterMap(127): использование ключевой карты по умолчанию: /system/usr/keychars/qwerty.kcm.bin 10-27 10:23:12.671: WARN/KeyCharacterMap(119): нет клавиатуры для идентификатора 0 10-27 10:23:12.671: WARN/KeyCharacterMap(119): Использование ключевой карты по умолчанию: /system/usr/keychars/qwerty.kcm.bin 10-27 10:23:14.081: DEBUG/dalvikvm(127): GC_EXPLICIT освободил 2068 объектов / 132776 байт за 77 мс 10-27 10:23:33.990: INFO/ActivityManager(58): Запуск действия: Намерение{ act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg= 0x10200000 cmp=org.anddev.android.speechreminder/.ReminderActivity } 10-27 10:23:34.470: INFO / ActivityManager(58): Запуск действия: Намерение { act=android.speech.tts.engine.CHECK_TTS_DATA cmp=com.svox.pico/.Проверьте voicedata } 10-27 10:23:34.710: INFO/ ActivityManager(58): отображаемая активность org.anddev.android.speechreminder/.ReminderActivity: 577 мс (всего 577 мс) 10-27 10:23:34.720: WARN /KeyCharacterMap(313): нет клавиатуры для идентификатора 0 10-27 10:23:34.720: WARN/KeyCharacterMap(313): использование ключевой карты по умолчанию: /system/usr/keychars/qwerty.kcm.bin 10-27 10:23:34.780: ПОДРОБНЫЙ/TtsService(319): TtsService.onCreate() 10-27 10:23:34.830: ПОДРОБНЫЙ/TtsService(319): Собирается загрузить /system/lib/libttspico.итак, applyFilter=true 10-27 10:23:34.910: ПОДРОБНЫЙ /TtsService(319): TtsService.setLanguage(англия, США, ) 10-27 10:23:35.120: INFO/ActivityManager(58): Процесс com.android.alarmclock (pid 170) умер. 10-27 10:23:35.141: INFO / SVOX Pico Engine(319): успешно загружен en-US 10-27 10:23:35.141: INFO / SynthProxy(319): настройка скорости речи на 100 10-27 10:23:44.870: DEBUG/dalvikvm(296): GC_EXPLICIT освобождает 1918 объектов / 108296байты в 159 мс 10-27 10:23:49.990: WARN/ KeyCharacterMap(114): нет клавиатуры для идентификатора 0 10-27 10:23:50.001: WARN/ KeyCharacterMap(114): использование ключевой карты по умолчанию: /system/usr/keychars/qwerty.kcm.bin 10-27 10:24:18.050: WARN/InputManagerService(58): окно уже сфокусировано,игнорирование усиления фокуса: com.android.internal.view.IInputMethodClient $Stub $Proxy@44fe6228 10-27 10:24:20.550: DEBUG / SntpClient(58): сбой во время запроса: java.net.SocketException: семейство адресов не поддерживается протоколом
Комментарии:
1. Добро пожаловать в stackoverflow. Если вы считаете, что конкретный ответ является удовлетворительным ответом на ваш вопрос, пожалуйста, нажмите галочку рядом с ответом, чтобы принять его.
2. Не могли бы вы опубликовать полную ошибку из logcat?
Ответ №1:
Тагрид, похоже, ты получаешь ошибку Stackoverflow. Это указывает на то, что где-то в вашем коде у вас бесконечная рекурсия. Похоже, что функции VoiceAlert и ReadyToSpeak продолжают вызывать друг друга. Вы уверены, что используемый вами пакет org.androiddev.android.test хорошего качества? Используете ли вы его релизную версию?
Комментарии:
1. Спасибо за воспроизведение, org.androiddev.android.test — это пакет, который я создаю для своего приложения, а voicealert — это объект другого класса VoiceAlert, который я ввел в него речевой код, и перед тем, как я попытаюсь зарегистрировать трансляцию, onrecive срабатывает с тостом, но не срабатывает при вызовеметод речи
2. Нужно ли мне менять пакет? или мне нужно делать приложение заново? и для цикла мне нужно, чтобы этот цикл продолжал работать до установленного времени срабатывания
3. Проблема в том, что где-то в пакете. Ваша проблема связана с ReadyToSpeak и VoiceAlert. Они продолжают звонить друг другу в бесконечном цикле.
4. Я сделал все возможное снова, и onrecesive не сработал вовремя и добавил приемник в mainfeastfile, но я распечатал вам logcat, я не знаю, что делать еще