MediaPlayer 类的 seekTo 有助于确定起点。如何设置终点?MediaPlayer 类中似乎没有任何可用的方法。例如,我只想播放 10 秒总媒体中 3 到 6 秒的部分。我确实看到了设置睡眠定时器和中断 MediaPlayer 的解决方案。还有其他更好的解决方案吗?
问问题
354 次
3 回答
0
您可以使用睡眠计时器,但使用单独的线程可能更容易。这样您就不必担心您的 UI 线程正在做什么或中断它。
只需getCurrentPosition()
在线程循环中使用来监视播放时间。当它到达目标“结束”时间时,就是stop()
它。向线程添加睡眠延迟也是一个好主意。您不需要像循环运行一样快地检查它,也许每秒 5-10 次就可以了。
于 2013-09-18T12:57:28.430 回答
0
如果您没有找到答案,您可以尝试使用打开 html5-JS 网站的 web 视图来解决解决方案。
这是一个不完整的快速示例。(使用 jsfiddle 代码)
<audio id="audio2"
preload="auto"
src="http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg" >
<p>Your browser does not support the audio element</p>
</audio>
<script>
myAudio=document.getElementById('audio2');
myAudio.addEventListener('canplaythrough', function() {
this.currentTime = 12;
this.play();
});
</script>
这不是最好的解决方案,但也许可以帮助一些事情..
祝你好运!
于 2013-09-18T13:19:41.433 回答
0
可能有点晚了:)但这是我解决问题的方法
private void singlePlayAudio(int start, int duration) {
// duration = end_part - start_part;
//in my case i need to pause
//if other players are playing
pauseMainPlayer();
twoMediaPlayersPause();
final boolean isPlaying = singleMediaPlayer.isPlaying();
if (isPlaying) {
singleMediaPlayHandler.removeCallbacks(singleAudioThread);
singleMediaPlayer.pause();
singleMediaPlayer.seekTo(start);
}
singleAudioThread = () -> {
singleMediaPlayer.pause();
singleMediaPlayer.seekTo(start);
autoViewPagerScroller();
};
singleMediaPlayer.seekTo(start);
singleMediaPlayer.start();
singleMediaPlayHandler.postDelayed(singleAudioThread, duration);
}
private final Handler singleMediaPlayHandler = new Handler(Looper.getMainLooper());
private Runnable singleAudioThread;
于 2022-02-13T10:12:33.607 回答