LoginSignup
0
3

More than 3 years have passed since last update.

【Android】初心者がJavaでタイマーアプリを作ってみた

Last updated at Posted at 2020-05-06

ゴールデンウィークで暇な時間ができたので、JavaとAndroidについて勉強してアプリを作ってみました。
作ったのはタイマーアプリです。すごい簡単なものですが、JavaとAndroidを1から勉強したのでなかなか大変でした。
自分で入力した時間をカウントしてくれるというものですが、秒数でしか指定できません。
微妙な出来ですがとりあえず備忘録としておきます。

  • 仕様

    • 時間を自分で設定できる
    • STARTボタンでカウント開始
    • STOPボタンでカウントストップ
    • カウント終了をバイブレーションで通知
  • 環境

    • windows10
    • androidstudio3.6.3
    • Java8
  • ファイル

    • MainActivity.java
    • activity_main.xml

以下、コードです。

MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final String START_MESSAGE = "START";
        final String STOP_MESSAGE = "STOP";
        final String FINISH_MESSAGE = "カウント終了";
        Button StartButton = findViewById(R.id.StartButton);
        Button StopButton = findViewById(R.id.StopButton);
        final EditText editTime = findViewById(R.id.editTime);
        final CountDownTimer[] cdt = new CountDownTimer[1];

        // スタートボタンイベントリスナー
        StartButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // スタートトースト
                Toast toast = Toast.makeText(MainActivity.this, START_MESSAGE, Toast.LENGTH_SHORT);
                toast.show();

                // 入力時間取得
                int inputTime = Integer.parseInt(String.valueOf(editTime.getText()));

                // カウントダウンタイマー
                cdt[0] = new CountDownTimer( inputTime*1000, 1000) {
                    @Override
                    public void onTick(long millisUntilFinished) {
                        editTime.setText(Long.toString(millisUntilFinished/1000));
                    }

                    @Override
                    public void onFinish() {

                        //バイブレーション
                        Vibrator v = (Vibrator) getSystemService(VIBRATOR_SERVICE);
                        v.vibrate(new long[]{1000, 1000, 1000, 1000, 1000, 1000}, -1);

                        // 終了トースト
                        Toast toast = Toast.makeText(MainActivity.this, finish_message, Toast.LENGTH_SHORT);
                        toast.show();

                        // カウントを0に設定
                        editTime.setText("0");
                    }
                }.start();
            }
        });

        // ストップボタンイベントリスナー
        StopButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // ストップトースト
                Toast toast = Toast.makeText(MainActivity.this, STOP_MESSAGE, Toast.LENGTH_SHORT);
                toast.show();

                // カウントダウンタイマー停止
                cdt[0].cancel();
            }
        });
    }
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="10"
        android:gravity="center"
        android:hint="タイマーセット"
        android:inputType="time"
        android:textSize="30sp" />

    <Button
        android:id="@+id/StartButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="START" />

    <Button
        android:id="@+id/StopButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="STOP" />

</LinearLayout>
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3