Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文件末尾停止MediaPlayer 250ms_Java_Android_Kotlin - Fatal编程技术网

Java 从文件末尾停止MediaPlayer 250ms

Java 从文件末尾停止MediaPlayer 250ms,java,android,kotlin,Java,Android,Kotlin,我正在谷歌语音文本交互手机应用程序中使用语音识别 当人工智能跟你顶嘴时,我停止听,以抵消噪音 现在,我正在使用onCompletedListener在文件末尾恢复识别,但最好在文件结束之前开始,以考虑网络延迟并优化响应时间 是否有办法监视currentPosition并在每个文件末尾250ms处触发事件?它们的长度不一致。检测当前位置的唯一方法是调用“MediaPlayer.getCurrentPosition()”,因此唯一的解决方案是定期检查位置并检查“(MaxPosition-Curren

我正在谷歌语音文本交互手机应用程序中使用语音识别

当人工智能跟你顶嘴时,我停止听,以抵消噪音

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


是否有办法监视
currentPosition
并在每个文件末尾250ms处触发事件?它们的长度不一致。

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

一个改进是,只有在“MediaPlayer.play()”开头的“MaxLength-250ms”之后才开始定期检查(如上所述)


如果您允许在MediaPlayer中进行搜索,则应在每次搜索后更改此计时器。

是否有办法在单独的线程上以while循环或类似方式播放音频,而不会使应用程序陷入困境?然后执行检查并做出反应?如果您对其进行编码,您将得到它。您建议什么作为周期检查?只有一个
计时器。scheduleAtFixedRate
功能在50ms循环中检查和反应?最好的方法是在需要的时间前几毫秒开始一个小的“检查循环”。事实上,如果你有一个5分钟的音乐,我不认为你想在这段时间里每50毫秒检查一次,对吗?因此,最好是在“maxLength-500ms”开始循环,然后从那一刻开始每50ms循环一次,直到达到“maxLength-250ms”。循环检查不能保证每50ms执行一次,因此我建议提前一点开始,然后做一个短循环。