νλ©΄ κ°λ°
λ‘μ§μ μ§ λ€.
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 + "μ΄");
}
}
});
}
}