【问题标题】:how to create a voice reminder in android如何在android中创建语音提醒
【发布时间】:2011-10-25 17:53:44
【问题描述】:

我正在尝试制作一个语音提醒,它需要记住一个文本,并且在应用程序将文本转换为语音说出来时,我做了提醒的代码,我创建了另一个类扩展广播接收器并做了提醒及时触发的代码但是当我让它显示敬酒时它会运行但是当我在接收器中编写语音代码以在设定的时间触发但它给了我“应用程序强制关闭”你能请回答我,我在 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): id 0 没有键盘 10-27 10:23:12.671:WARN/KeyCharacterMap(119):使用默认键盘映射:/system/usr/keychars/qwerty.kcm.bin 10-27 10:23:14.081:调试/dalvikvm(127):GC_EXPLICIT 在 77 毫秒内释放了 2068 个对象/132776 个字节 10-27 10:23:33.990: INFO/ActivityManager(58): 开始活动: Intent { 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): 开始活动: Intent { act=android.speech.tts.engine.CHECK_TTS_DATA cmp=com.svox.pico/.CheckVoiceData } 10-27 10:23:34.710: INFO/ActivityManager(58): 显示活动 org.anddev.android.speechreminder/.ReminderActivity: 577 ms(总共 577 ms) 10-27 10:23:34.720: WARN/KeyCharacterMap(313): id 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: VERBOSE/TtsService(319): 即将加载 /system/lib/libttspico.so, applyFilter=true 10-27 10:23:34.910: VERBOSE/TtsService(319): TtsService.setLanguage(eng, USA, ) 10-27 10:23:35.120: INFO/ActivityManager(58): 进程 com.android.alarmclock (pid 170) 已经死亡。 10-27 10:23:35.141:INFO/SVOX Pico 引擎(319):成功加载 en-US 10-27 10:23:35.141:INFO/SynthProxy(319):将语速设置为 100 10-27 10:23:44.870: 调试/dalvikvm(296): GC_EXPLICIT 在 159 毫秒内释放了 1918 个对象/108296 个字节 10-27 10:23:49.990: WARN/KeyCharacterMap(114): id 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): request time failed: java.net.SocketException: Address family not supported by protocol

【问题讨论】:

  • 欢迎来到stackoverflow。如果您发现某个特定的回复是对您问题的满意答案,请点击回复旁边的复选标记以接受它。
  • 能否请您从 logcat 中发布完整的错误信息?

标签: android


【解决方案1】:

Taghrid,您似乎遇到了 Stackoverflow 错误。这表明您的代码中某处有Infinite recursion。看起来是 VoiceAlert 和 ReadyToSpeak 函数不断相互调用。你确定你使用的包 org.androiddev.android.test 质量很好吗?您使用的是发行版吗?

【讨论】:

  • 感谢您的重播,org.androiddev.android.test 是我为我的应用程序创建的包,voicealert 是另一个类 VoiceAlert 的对象,我在其中使用了语音代码,在我之前尝试用 toast 注册广播 onrecive 火灾,但当我调用语音方法时没有触发
  • 我需要换包吗?还是我必须重新申请?对于循环,我需要这个循环继续运行,直到设定的时间触发
  • 问题出在包的某个地方。您的问题在于 ReadyToSpeak 和 VoiceAlert。他们一直在无休止的循环中互相呼唤。
  • 我又做了一遍,onrecesive 没有按时触发,并在 mainfeastfile 中添加了接收器,但我打印了 logcat 我不知道还能做什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
相关资源
最近更新 更多