시도 :
알람기능을 사용하고싶다.
생각 :
1. 알람을 하려면 시간이 필요하다.
2. 시간은 숫자를 카운트해서 할 수있다.(지금으로부터 얼마 후,
3. 시간은 컴퓨터 시스템 정보를 가져올 수 있다.(어느시간에,
4. 시간을 가져와서 해보자.
알고리즘 :
1. 쓰레드를 구현하여서 시간을 항시 체크한다.
2. 쓰레드의 구현부(내 사수 이름ㅋㅋㅋ)에서 지정한 시간과 현재시간이 일치하는지 체크
3. 조건이 만족되면 알람으로 동작하고자 하는 프로그램을 ON시킨다.
4. 일정 시간이 지나면 프로그램을 OFF시킨다.
구현 :
구현은 자바 애플릿에 이미 구현되어있는 Clock 소스를 이용하였다.
import java.util.*; import java.awt.*; import java.applet.*; import java.text.*; public class test_digital_clock extends Applet implements Runnable { private volatile Thread timer; // The thread that displays clock private SimpleDateFormat formatter; // Formats the date displayed private String lastdate; // String to hold date displayed private Date currentDate; // Used to get date to display private Color numberColor; // Color of second hand and numbers private String startTime; private String nowTime; public void init() { formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault()); currentDate = new Date(); lastdate = formatter.format(currentDate); startTime = "10:37"; numberColor = Color.darkGray; resize(300,300); // Set clock window size } // Paint is the main part of the program public void use(Graphics g) { String today; currentDate = new Date(); formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); today = formatter.format(currentDate); g.setColor(getBackground()); g.drawString(lastdate, 5, 125); g.setColor(numberColor); g.drawString(today, 5, 125); lastdate = today; currentDate = null; } public void start() { timer = new Thread(this); timer.start(); } public void stop() { timer = null; } public void run() { Thread me = Thread.currentThread(); while (timer == me) { try { Thread.currentThread(); Thread.sleep(100); } catch (InterruptedException e) { } formatter.applyPattern("HH:mm"); Date newDate = new Date(); nowTime = formatter.format(newDate); if(startTime.equals(nowTime)) { formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); Graphics g = this.getGraphics(); use(g); } } } }
고찰:
SimpleDateFormat 클래스
SimpleDateFormat(String pattern, Locale locale)
yyyy : 년도
w : 일년에 몇번째 주인지
W : 한달에 몇번째 주인지
MM : 월
dd : 일
D : 일년에 몇번째 일인지
E : 요일
F : 요일(숫자)
hh : 12시간제 시간
HH : 24시간제 시간
KK : 24시간제 시간(단, 24시는 0시)
a : 오전, 오후
mm : 분
ss : 초
SSS : 미리세컨드
사용법
SimpleDateFormat SDf = new SimpleDateFormat("hh:mm:ss"); // 00:00:00의 형식을 가짐
또, 생성때 형식을 지정하지 않고 후에 지정할 수도 있다.
SimpleDateFormat SDf = new SimpleDateFormat(); SDf.applyPattern("hh:mm:ss");
또, 이걸 문자열로 저장할 수 있다.
SimpleDateFormat SDf = new SimpleDateFormat(); SDf.applyPattern("hh:mm:ss"); Date date = new Date(); // 현재 Date정보를 가져옴. String today = SDf.format(date);
위는 SimpleDateFormat 클래스를이용하였는데 아니면
System.currentTimeMillis();
요게 현재시간을 long형 정보로 빼내주는데
이걸 SimpleDateFormat 인스턴스에 타입캐스팅 시켜주면 또 자동으로 현재 시간이 뽑혀져 나온다.
long time = System.currentTimeMillis(); SimpleDateFormat SDf = new SimpleDateForamt(); String str = SDf.format(time); // 문자열 정보로 저장
'프로그래밍 > Android 짜투리 지식' 카테고리의 다른 글
[안드로이드] editText 터치 시 editText가 가려지는 문제 (0) | 2011.08.23 |
---|---|
[안드로이드]SQLite 애뮬레이터 내 DB 불러오기 (0) | 2010.08.06 |
[안드로이드] SQLite를 이용한 database 생성 (3) | 2010.08.04 |
[안드로이드] handler의 사용 (4) | 2010.07.19 |
[자바] random 함수 (0) | 2010.07.19 |