【发布时间】:2014-04-27 13:08:38
【问题描述】:
我正在使用倒数计时器进行音频通知...而且从一开始就不准确...
使用初始参数
private final long startCountDown;
private final long intervalCountDown;
...
startCountDown = 180 * 1000; // 3 mns - to be set from Preferences later
intervalCountDown = 60 * 1000; // 1 mns - to be set from Preferences later
...
public void onTick(long millisUntilFinished) {
Log.d(TAG, "notify countDown: " + millisUntilFinished + " msecs");
}
countDownTimer = new SwimCountDownTimer(startCountDown,intervalCountDown);
....
public void startCountDown() {
Log.d(TAG, "start countDown for " + startCountDown + " msecs" );
countDownTimer.start();
}
我可以在日志中看到初始倒计时正确设置为 180000,但下一个应该是 120000 并且设置为 119945 !!!
04-27 14:50:42.146: I/SWIMMER(8670): notify countDown: 180000 msecs
04-27 14:51:42.206: I/SWIMMER(8670): notify countDown: 119945 msecs
这很烦人,因为音频通知器只希望说“2 分钟”而不是“1 分 59 秒”......;为什么间隔不正确......? 我可以在将文本设置为语音字符串时尝试它...但是有什么方法可以获取正确的数据吗?
感谢建议
【问题讨论】:
-
55毫秒有这么大的问题吗?这是 1/20 秒的时间。大多数人无法辨别其中的区别。
-
如果它一直慢约 55 毫秒,并且永远不会超过 120000 毫秒,那么这可能就是调用 onTick 方法所需的时间。把它四舍五入。
-
谢谢...问题不在于准确性,而是重用音频通知的值,所以我猜四舍五入是 Greg 提到的解决方案... 120000ms 是“2 分钟”音频消息... 119945不是...
标签: java android countdowntimer