有没有办法在通话时运行SpeechRecognizer?我是这样做的:
- BroadcastReceiver处理电话状态的变化(例如:offhook)。 - SpeechRecognizer在当前(主)线程中启动,因为它只能在主线程中启动。应用程序上下文用于识别器(不能使用给广播接收器的当前上下文)。
但不幸的是,另一边的人听不到我说话(语音识别却可以正常工作)。在某种程度上,识别器“消耗”了我的声音并且没有发送出去。
我知道在通话期间在主线程中执行操作是很危险的,但是否有办法在通话期间以某种方式运行识别器呢?
更新:我正在尝试使用TelephonyManager侦听器而不是BroadcastReceiver,但一些内部服务会抛出空指针异常。
- BroadcastReceiver处理电话状态的变化(例如:offhook)。 - SpeechRecognizer在当前(主)线程中启动,因为它只能在主线程中启动。应用程序上下文用于识别器(不能使用给广播接收器的当前上下文)。
但不幸的是,另一边的人听不到我说话(语音识别却可以正常工作)。在某种程度上,识别器“消耗”了我的声音并且没有发送出去。
我知道在通话期间在主线程中执行操作是很危险的,但是否有办法在通话期间以某种方式运行识别器呢?
更新:我正在尝试使用TelephonyManager侦听器而不是BroadcastReceiver,但一些内部服务会抛出空指针异常。
SpeechRecognizer
所有。它不会同时归两者所有。麦克风没有“直通”的概念,即它既向一个应用程序提供数据,又将数据传递给其他应用程序。拥有这样的能力并不是一个不合理的概念,但它不存在,并且出于nandeesh指出的原因,可能无法通过电话呼叫进行传递。 - CommonsWare