我的应用中有一个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();
答案 0 :(得分:1)
尝试:
String display = DateUtils.formatElapsedTime(millisUntilFinished/1000);
那为你做了转换。
和
timer = new CountDownTimer(playtime,1000){
因为CounterDownTimer需要运行毫秒数。