timepicker和SystemClock.elapsedRealtime()的奇数值;

时间:2012-10-08 15:59:37

标签: java android

我的应用中有一个TimePicker,可以选择播放歌曲的时间,即时通讯CountDownTimer我正在使用的剩余时间有问题,一切都是当然,我在幕后花了很多时间,我认为我正在进行转换,但我在屏幕上看到的只是完全错误的值。

当我只用3600000(1小时)作为第一个参数进行测试CountDownTimer时,一切正常,但是当我把时间选择器设置为0并且分钟为1时,就像我只需要1分钟的播放一样,它显示12小时什么看起来像分钟和秒插槽中的随机值。 tp.getCurrentHour();设置为零时返回零,tp.getCurrentMinute();按预期返回一个,看起来这个部分正在发生一些事情,无法弄清楚到底是什么:

游戏时间=(小时*(60 * 60 * 1000))+(min *(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();

1 个答案:

答案 0 :(得分:1)

尝试:

String display = DateUtils.formatElapsedTime(millisUntilFinished/1000);

那为你做了转换。

timer = new CountDownTimer(playtime,1000){ 

因为CounterDownTimer需要运行毫秒数。