Android

μ•ˆλ“œλ‘œμ΄λ“œ μŠ€νŠœλ””μ˜€ μ•ŒλžŒ app 개발

567Rabbit 2024. 6. 7. 10:21

 

ν™”λ©΄ 개발

 

 

 

 

λ‘œμ§μ„ μ§ λ‹€.

 

package com.yujinoh.alarm;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Button;
import android.widget.Toast;

import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;


public class MainActivity extends AppCompatActivity {

    // λ©€λ²„λ³€μˆ˜λ₯Ό λ§Œλ“ λ‹€.
    ImageView imgAlarm;
    TextView txtTime;
    TextView editTime;
    Button btnStart;
    Button btnCancel;
    CountDownTimer timer;
    int time;


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

        imgAlarm = findViewById(R.id.imgAlarm);
        txtTime = findViewById(R.id.txtTime);
        editTime = findViewById(R.id.editTime);
        btnCancel = findViewById(R.id.btnCancel);
        btnStart = findViewById(R.id.btnStart);

        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (timer != null){ // 타이머 μ‹œμž‘μ„ μ—¬λŸ¬λ²ˆ λˆŒλ €μ„ λ•Œ 였λ₯˜λ‚˜μ§€ μ•Šκ²Œ ν•œλ‹€
                    return;
                }

                // 1. μœ μ €κ°€ μž…λ ₯ν•œ μ‹œκ°„μ„ κ°€μ Έμ˜¨λ‹€
                String strTime = editTime.getText().toString().trim();

                // 1-1. μœ μ €κ°€ 아무것도 μž…λ ₯ μ•ˆν–ˆλŠ”μ§€ 검사
                if(strTime.isEmpty()){
                    Toast.makeText(MainActivity.this, "μ‹œκ°„μ„ μž…λ ₯ν•΄μ£Όμ„Έμš”", Toast.LENGTH_SHORT).show();
                    return;
                }

                time = 0;
                try{
                    time = Integer.parseInt(strTime);
                } catch (Exception e){
                    Toast.makeText(MainActivity.this, "숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”", Toast.LENGTH_SHORT).show();
                    return;
                }

                long countTime = time * (long)1000;   //1μ΄ˆμ— 1000λ°€λ¦¬μ„Έμ»¨μ¦ˆ 이닀.


                // 2. 타이머λ₯Ό λ§Œλ“ λ‹€
                timer = new CountDownTimer(countTime, 1000) {  //1μ΄ˆμ”© 쀄어든닀.
                    @Override
                    public void onTick(long millisUntilFinished) {
                        // 1μ΄ˆμ”© κ°μ†Œν• λ•Œλ§ˆλ‹€ ν•˜κ³ μ‹Άμ€ 일을 μ½”λ”©.
                        // 화면에 ν‘œμ‹œν•˜λŠ” 것을 μ—¬κΈ°μ„œ ν•œλ‹€.
                        long remain = millisUntilFinished / 1000;
                        txtTime.setText(remain + "초");
                    }

                    @Override
                    public void onFinish() {

                        // μ†Œλ¦¬λ‚˜λ„λ‘ ν•œλ‹€.
                        MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);
                        mp.start();

                        // 흔듀리도둝 ν•œλ‹€.
                        YoYo.with(Techniques.Shake).duration(400).repeat(4).playOn(imgAlarm);

                        timer = null; // 타이머 μ‹œμž‘μ„ μ—¬λŸ¬λ²ˆ λˆŒλ €μ„ λ•Œ 였λ₯˜λ‚˜μ§€ μ•Šκ²Œ λλ‚˜λ©΄ null둜 λ§Œλ“€μ–΄μ€€λ‹€

                };
                // 3. 타이머λ₯Ό μ‹œμž‘ν•œλ‹€
                timer.start();

            }
        });

        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // 1. 타이머λ₯Ό μ·¨μ†Œν•œλ‹€.
                if (timer != null){
                    timer.cancel();
                    timer = null;
                }

                // 2. μœ μ €μ—κ²Œ ν‘œμ‹œν•˜λŠ” ν…μŠ€νŠΈλ·°μ˜ 초λ₯Ό μ΄ˆκΈ°ν™”ν•œλ‹€.
                if (time == 0){
                    txtTime.setText("λ‚¨μ€μ‹œκ°„");
                } else {
                    txtTime.setText(time + "초");
                }

            }
        });

    }
}