[英]Android: how to use SystemClock.elapsedRealtime() to show second one by one?
[英]Odd values with timepicker and SystemClock.elapsedRealtime();
我的应用程序中有一个TimePicker
,可以选择播放歌曲的时间,使用CountDownTimer
im时无法获得剩余时间以正确显示,因此,问题几乎都发生在毫秒内我认为即时转换正确,但我在屏幕上看到的只是完全错误的值。
当我只使用3600000(1hour)作为第一个参数进行测试CountDownTimer时,一切正常,但是当我将timepicker设置为0并将minutes设置为1时,就像我只希望播放1分钟一样,它将显示12小时,看起来像是随机的分钟和秒位中的值。 tp.getCurrentHour();
当设置为零和tp.getCurrentMinute();
时返回零tp.getCurrentMinute();
返回预期的结果,似乎这部分正在发生什么,无法弄清楚是什么:
游戏时间=(小时*(60 * 60 * 1000))+(分钟*(60 * 1000)); startime = SystemClock.elapsedRealtime();
为什么是tv2.setText("totaltest "+startime+playtime);
显示值6000046929803 ??? 这显然是错误的...
这是其余的代码:
TimePicker tp =(TimePicker)findViewById(R.id.timePicker1);
public void onClick(View v) {
// TODO Auto-generated method stub
long hour = tp.getCurrentHour();
long min = tp.getCurrentMinute();
playtime = (hour * (60 * 60 * 1000)) + (min * (60 * 1000));
startime = SystemClock.elapsedRealtime();
tv2.setText("totaltest "+startime+playtime);
timer = new CountDownTimer(startime+playtime,1000){
@Override
public void onFinish() {
tv.setText("finished");
}
//@SuppressLint("ParserError")
@Override
public void onTick(long millisUntilFinished) {
String display = DateUtils.formatElapsedTime(millisUntilFinished/1000);
tv.setText(display);
}
}.start();
尝试:
String display = DateUtils.formatElapsedTime(millisUntilFinished/1000);
那为您做了转换。
和:
timer = new CountDownTimer(playtime,1000){
因为CounterDownTimer预期要运行的毫秒数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.