在尝试解决应用中的android.speech.SpeechRecognizer.ERROR_CLIENT
错误时,我在调用侦听器的onError()
的SpeechRecognizer.java行中设置了断点,即9行包含:
mListener.onError(ERROR_CLIENT);
这是因为此错误有9个不同的原因,但它们对我的应用不可见,并且前面的Log.e(TAG, "cancel() failed", e);
语句在我的调试控制台上找不到。
但是,这些断点将被忽略。
我可以肯定这些mListener.onError(ERROR_CLIENT);
会被调用,因为在应用的侦听器的onError on中设置断点
case SpeechRecognizer.ERROR_CLIENT:
管用!
AFAICR,应该可以在库jar中放置断点。我遗漏了什么?
是否可以在SpeechRecognizer.java
内部设置断点,以便在到达时中断?
(使用Android Studio 2021.3.1补丁1)
如果以下内容带来了一些见解,请注意SDK 33原始文件中的69个错误:
它们主要是由于未解析的符号:
1条答案
按热度按时间6yoyoihd1#
经过更多的实验,我发现在
SpeechRecognizer.java
内放置断点在到达时确实会中断:我是通过跟踪堆栈来实现的:
这告诉我,难以捉摸的
Log.e(TAG, "cancel() failed", e);
也许永远不会被调用,但这是一个不同的问题。同时,要判断ERROR_CLIENT的9个候选项中哪一个是根本原因,唯一的方法似乎是发现并跟踪NetworkSpeechRecognizer异常引发的堆栈跟踪: