時間の表示

| コメント(1)

アンドロイドで時間を計測するために時間の取得を作ってみた。test15.bmp

以外にあっさり、時間の計算ができました。

1.現在時間を得る方法。(ミリ単位で可能)

time =System.currentTimeMillis();

2.フォーマットして表示する方法

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss SSS");
textView.setText(sdf.format(time));

3.時間の計算(時間の型はLong型です)

time = endTime - startTime

※timeの値は、1/1000秒が単位となる。(最大24h)
 3時間2分5秒なら time=( (3*60*60)+(2*60+5) )*1000 = (10 925 000)となる。

※表示は、ミリ秒単位ですが、onClick  がスレッドで動いているので1/1000まで完全に正確ではありません。
 onClick  がハードウェア の割り込み発生ではなくソフトウェアで動いているので。

 

簡単なプログラムを作ってみた。Start から Stop ボタンの時間差を表示します。

button(button) / TextView(textView) 各1個をmain.xml に用意

 

public class TestTime extends Activity implements OnClickListener{
    
    private SimpleDateFormat sdf;
    private Button sButton;
    private long time;
    private long startTime;
    private TextView timeDisp;
    private Boolean sFlag = true;
    private String list="";
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        sdf = new SimpleDateFormat("HH:mm:ss SSS");
        sButton = (Button)findViewById(R.id.button);
        timeDisp= (TextView)findViewById(R.id.textView);
        sButton.setOnClickListener(this);
        sButton.setText("START");
    }
 
    @Override
    public void onClick(View v) {
        time = System.currentTimeMillis();
        if (v.getId() == R.id.button) {
            if (sFlag) {
                list=list + "Start=" + sdf.format(time);
                timeDisp.setText(list);
                startTime = time;
                sFlag = !sFlag;
                sButton.setText("STOP");
            }else {
                list=list + "  Stop= " + sdf.format(time) + "\n";
                list=list + "  (Lap= " + sdf.format(time - startTime) + ")\n";
                timeDisp.setText(list);
                sFlag = !sFlag;
                sButton.setText("START");
            }
        }
    }
}

 

日付を得るには? 下記の方法があります。
 

SimpleDateFormat  sdf = new SimpleDateFormat("yyyy'年'MM'月'dd'日 'hh'時'mm'分'ss'秒'"); 
Date  date = new Date();
Log.d("date : ", sdf.format(date));

 

これでは、つまらないのでストップウォッチを作ってみた。「続き」にUPしました。

特徴は、

test16.bmp

 

ボタンが少ない事。
Lap Time が表示される。
通常の機能は有する。

で、作ってみた。

 

「LAP」 を押すと001、002、003 とLAP時間と前回のLAPとの時間差が表示されます。

「STOP」 を押すとその時間が表示され、「reSTRART」 を押すと止まっていた時間が表示されます。

 

ボタンが2つのシンプルな構造としました。

 

Down カウンターも用意しました。

HH:mm:ssに時間を入れ Down にチェックを入れて「START」

 

 

こちらにUPしました  StopWatch.lzh 

test17.bmp

コメント(1)

HHの表示が現在の時刻を表示していますね
現在の時刻を取得する部分が残っていてストップウォッチとしては使えませんでした

コメントする