私はTimePicker
曲の再生時間を選択できるアプリを持っていますCountDownTimer
.imを使用して残り時間を適切に表示するのに問題があります.もちろん、すべてが舞台裏でミリ秒単位でほとんど進行しています.正しい変換を行っていると思いますが、画面に表示されるのは完全に間違った値だけです。
最初の引数として 3600000(1hour) を使用してテスト CountDownTimer を作成すると、すべて正常に動作しますが、 timepicker を 0 に、分を 1 にすると、1 分の再生だけが必要なように、12 時間とランダムに見えるものが表示されます分と秒のスロットの値。tp.getCurrentHour();
ゼロに設定するとゼロをtp.getCurrentMinute();
返し、期待どおりに1を返します。この部分で何かが起こっているようです。まだ何が起こっているのかわかりません:
再生時間 = (時間 * (60 * 60 * 1000)) + (分 * (60 * 1000)); starttime = 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();