从文件末尾停止 MediaPlayer 250ms

时间:2021-04-14 23:24:12

标签: java android kotlin

我正在使用谷歌语音转文本的交互式移动应用中使用语音识别。

当人工智能与你回话时,我会停止倾听以消除噪音。

现在,我正在使用 onCompletedListener 在文件末尾恢复识别,但最好在文件结束前开始识别,以解决网络延迟问题并优化响应时间。

有没有办法监视 currentPosition 并在每个文件结束后 250 毫秒触发一个事件?它们的长度不统一。

1 个答案:

答案 0 :(得分:1)

检测当前位置的唯一方法是调用“MediaPlayer.getCurrentPosition()”,因此唯一的解决方案是定期检查位置并检查“(MaxPosition - CurrentPosition)”是否在200-300ms之间。这意味着您需要每 50/75 毫秒执行一次此检查,以确保保持在该范围内。

只有在从“MediaPlayer.play()”开始的“MaxLength-250ms”之后,才能开始定期检查(正如我上面解释的)。

显然,如果您在 MediaPlayer 中允许搜索,则应根据每次搜索后更改此计时器。