【发布时间】:2017-06-21 23:12:58
【问题描述】:
我正在开发一个在 android 中使用 pocketsphinx 语音识别器的个人助理。这就是我的应用程序每次听到一个特殊单词时的工作方式,个人助理会回复并执行一项任务。我在释放麦克风时遇到了一些问题。我不知道这是否是一个错误。仅当我关闭应用程序时,麦克风仍在寻找该单词并使用文本到语音进行回答时才会发生这种情况。即使屏幕关闭。当我尝试录制视频时,它说麦克风被另一个应用程序使用。所以我必须再次打开我的应用程序并关闭应用程序才能释放麦克风。据我所知,释放资源的唯一生命周期是 onStop、onPause 和 onDestroy。不可能是我的手机出现故障我已经用两部不同的手机测试了该应用程序,但有时它仍然会发生在其中的机器人中。任何帮助,将不胜感激。 这就是我释放麦克风、相机和文本到语音的方式。提前致谢
private edu.cmu.pocketsphinx.SpeechRecognizer recognizer;
@Override
public void onPause() {
super.onPause();
if (tts != null) {
tts.shutdown();
}
if (camera != null) {
camera.release();
camera = null;
}
if (recognizer != null) {
recognizer.stop();
recognizer.cancel();
recognizer.shutdown();
recognizer = null;
}
}
@Override
protected void onStop() {
super.onStop();
if (tts != null) {
tts.shutdown();
}
if (camera != null) {
camera.release();
camera = null;
}
if (recognizer != null) {
recognizer.cancel();
recognizer.shutdown();
recognizer = null;
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (tts != null) {
tts.shutdown();
}
if (camera != null) {
camera.release();
camera = null;
}
if (recognizer != null) {
recognizer.cancel();
recognizer.shutdown();
}
}
【问题讨论】:
-
在 onPause 中停止后取消可能不是一个好主意,尝试只使用取消。
标签: android speech-recognition android-lifecycle microphone pocketsphinx