所以我正在使用Android MediaPlayer,我似乎遇到了一个非常奇怪的问题。我正在让MediaPlayer以减少的间隔播放声音。因此,随着时间的推移,每个声音之间的时间量会减少。有问题的声音长达0.05秒,声音之间的最短延迟为0.5秒。我有一个logcat显示延迟有多长的消息,并且每次打勾时它也会显示一条消息。但是,当应该播放每个节拍时,根据logcat,它会随机跳过一个节拍。在其他方面,它也会在一个乱七八糟的混乱中扮演一堆蜱虫。我不确定是什么导致了这一点,任何帮助表示赞赏。代码如下,如果需要,我可以发布logcat。
private Runnable timerRunnable = new Runnable() {
@Override
public void run() {
long millis = System.currentTimeMillis() - startTime;
int trueSeconds = (int) millis / 1000;
double seconds = (double) (millis / 1000);
int minutes = trueSeconds / 60;
Log.d("Tick Timing", "Delay: " + delay);
if(lastRun == 0)
lastRun = System.currentTimeMillis();
if((System.currentTimeMillis() - startTime) >50000)
delay = 500;
else if(System.currentTimeMillis() - lastRun > delay){
lastRun = System.currentTimeMillis();
delay /= 1.075;
if(phaseOne) {
Log.d("Tick Timing", "Tick One Played");
tickOne.start();
phaseOne = false;
}
else {
Log.d("Tick Timing", "Tick Two Played");
tickTwo.start();
phaseOne = true;
}
}
timerTextView.setText(minutes + ":" + seconds);
timerHandler.postDelayed(this, 1);
}
};`
答案 0 :(得分:1)
问题似乎来自你给timerHandler.postDelay()方法的延迟值。
你给1毫秒,导致你的Runnable和声音启动得太快。
尝试使用500毫秒。