2011年6月10日金曜日

クロノメーターのテスト:Android Chronometer




下記の順番以外正常には動かない。
スタートボタン->ストップボタン->リスタート
スタートボタン->ストップボタン->スプリットボタン

package com.GetTextTest;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.TextView;

public class GetTextTest extends Activity {
 private long stopTime;
 private long startTime;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer1);
  final Chronometer chronometer2 = (Chronometer) findViewById(R.id.chronometer2);

  chronometer.setBase(SystemClock.elapsedRealtime());
  chronometer.start();

  // スタートボタンが押された時
  Button startButton = (Button) this.findViewById(R.id.start);
  startButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    /** ボタンを押したときの処理 **/
    chronometer2.setFormat("スタート %s");
    // 初期値の設定 設定しないと端末が起動してからの時間からスタート
    chronometer2.setBase(SystemClock.elapsedRealtime());
    chronometer2.start();

    // スタートボタンを押した時の時間を取得・表示
    startTime = SystemClock.elapsedRealtime();
    TextView textStart = (TextView) findViewById(R.id.startText);
    String asText = startTime + "ms";
    textStart.setText(asText);
   }
  });
  // ストップボタンが押された時
  Button stopButton = (Button) this.findViewById(R.id.stop);
  stopButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    /** ボタンを押したときの処理 **/
    chronometer2.stop();
    // ストップボタンを押した時の時間を取得・表示
    stopTime = SystemClock.elapsedRealtime();
    // ストップボタンを押した時の時間
    TextView textStop = (TextView) findViewById(R.id.stopText);
    String asText = stopTime + "ms";
    textStop.setText(asText);
   }
  });
  // スプリットボタンが押された時
  Button splitButton = (Button) this.findViewById(R.id.split);
  splitButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    /** ボタンを押したときの処理 **/
    // 初期値の設定 設定しないとプログラムが起動してからの時間からスタート
    //chronometer2.setBase(chronometer2.getBase());いらない
    chronometer2.start();
   }
  });
  // リスタートボタンが押された時
  Button restartButton = (Button) this.findViewById(R.id.restart);
  restartButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    /** ボタンを押したときの処理 **/
    long time1 = stopTime - startTime;
    long time2 = SystemClock.elapsedRealtime() - time1;

    chronometer2.setBase(time2);
    chronometer2.start();

   }
  });

 }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout android:id="@+id/linearLayout3"
        android:layout_height="wrap_content" android:layout_width="match_parent"
        android:orientation="vertical">
        <Chronometer android:id="@+id/chronometer1"
            android:layout_weight="1" android:layout_width="wrap_content"
            android:text="Chronometer" android:layout_height="wrap_content"
            android:format="起動からの時間 %s"></Chronometer>
        <TextView android:layout_weight="1" android:layout_width="fill_parent"
            android:text="スタートのSystemClock.elapsedRealtime()" android:id="@+id/startText"
            android:layout_height="wrap_content"></TextView>
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="ストップのSystemClock.elapsedRealtime()"
            android:id="@+id/stopText"></TextView>
    </LinearLayout>
    <Chronometer android:id="@+id/chronometer2" android:text="Chronometer"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_weight="1"></Chronometer>
    <LinearLayout android:id="@+id/linearLayout1"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:layout_weight="1">
        <Button android:layout_height="wrap_content" android:text="スタート"
            android:id="@+id/start" android:layout_width="wrap_content"
            android:layout_weight="1"></Button>
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/stop"
            android:text="ストップ" android:layout_weight="1"></Button>
    </LinearLayout>
    <LinearLayout android:id="@+id/linearLayout2"
        android:layout_height="wrap_content" android:layout_width="match_parent"
        android:layout_weight="1">
        <Button android:text="リスタート" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/restart"
            android:layout_weight="1"></Button>
        <Button android:text="スプリット" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/split"
            android:layout_weight="1"></Button>
    </LinearLayout>
</LinearLayout>

ダウンロード

関連記事

0 件のコメント:

コメントを投稿