Android Studio 忽略www.example.com内的断点SpeechRecognizer.java

izkcnapc  于 2023-01-05  发布在  Android
关注(0)|答案(1)|浏览(190)

在尝试解决应用中的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个错误:

它们主要是由于未解析的符号:

6yoyoihd

6yoyoihd1#

经过更多的实验,我发现在SpeechRecognizer.java内放置断点在到达时确实会中断

我是通过跟踪堆栈来实现的:

这告诉我,难以捉摸的Log.e(TAG, "cancel() failed", e);也许永远不会被调用,但这是一个不同的问题。
同时,要判断ERROR_CLIENT的9个候选项中哪一个是根本原因,唯一的方法似乎是发现并跟踪NetworkSpeechRecognizer异常引发的堆栈跟踪:

W  Recognizer network error 
    at com.google.android.apps.speech.tts.googletts.service.GoogleTTSRecognitionService.onCancel(PG:6)
    at android.speech.RecognitionService.dispatchCancel(RecognitionService.java:185)
    at android.speech.RecognitionService.-$$Nest$mdispatchCancel(Unknown Source:0)
    at android.speech.RecognitionService$1.handleMessage(RecognitionService.java:110)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7872)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

相关问题