- 작품 목표

경남 인제대학교 학생들의 편의를 사용하여 만든 어플리케이션으로써, 학생들이 많이 사용하는 통확버스와 식단표 확인이 가능합니다. 통학버스는 기존에 존재하는 버스 어플리케이션과 비슷한 구성을 하고 있으며, 식단표는 학교 전체적인 식단이 확인 가능하도록 만들어졌습니다.

- 개발 아키텍쳐
Activity / SQLiteOpenHelper/ MySQL / 웹 PHP 컴포넌트를 사용한 프로그래밍
BlueOnyx 서버 사용
(서버 DB를 PHP로 웹상에 띄우고 그 자료를 Json 파싱으로 모바일 내부 DB로 가져 오는 방식)

- 기능 설명

1. 통학버스 학기/방학 시간표
2. 승차장소 지도와 사진
3. 버스노선 즐겨찾기 및 시간 클릭시 운행여부와 남은시간 표시
4. 요일별, 식당별 메뉴
5. 학교홈페이지 바로가기

- 실행, 설치방법
안드로이드 마켓에서 카오스 헬퍼 검색 후 설치(무료)
Android 2.2(프로요) 이상
https://market.android.com/details?id=Injes.org&feature=search_result#?t=W251bGwsMSwxLDEsIkluamVzLm9yZyJd

- 이미지

    

    


이 글을 딱히 안드로이드에만 적용되는 부분은 아닙니다.

제가 지금 현재 날짜 계산 프로그램을 만들고 있습니다. 그런데 예전에 저의 봉봉이와 함께 쓰기 위한 D-day 프로그램을 만들었었는데 이게 왠일 다른 분들을 알고리즘을 사용하였는데 프로그램을 작동 시킬때 날짜가 1일 차이로 계산 바뀌는 것이었습니다. 참으로 이상함을 느끼고 이번에 만드는 프로그램에는 제대로 만들어 보겠다고 생각하고 이리 찾아보고 저리 찾아본 결과 답이 나오게 되었습니다.

소스는 정말 참으로 간단합니다.


public class dday{
	public int caldate(int myear, int mmonth, int mday) {
		try {
			Calendar today = Calendar.getInstance(); //현재 오늘 날짜
			Calendar dday = Calendar.getInstance(); 


			dday.set(myear,mmonth,mday);// D-day의 날짜를 입력합니다.


			long day = dday.getTimeInMillis()/86400000; 
			// 각각 날의 시간 값을 얻어온 다음 
			//( 1일의 값(86400000 = 24시간 * 60분 * 60초 * 1000(1초값) ) )


			long tday = today.getTimeInMillis()/86400000;
			long count = tday - day; // 오늘 날짜에서 dday 날짜를 빼주게 됩니다.
			return (int) count+1; // 날짜는 하루 + 시켜줘야합니다.
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
			return -1;
		} 
	}
}

 소스는 참 간단한데 위의 소스에서 보시면 각 날짜의 시간을 따로 불러들어와서 그 날 값을 서로 빼주게 됩니다. 다른 블로그에 있는 방법으로 사용을 하면 이상하게 저는 날짜가 한번씩 번갈아 가면서 계산이 되던데 저런식으로 해주니 날짜의 변동이 일어나지 않더군요. 제가 아직까지 프로그래밍에 많이 미숙하여 잘 모르는 부분일 수도 있습니다. 혹시나 다른 지식인 분들께서 아시는 정보가 있으시면 많이 알려주시면 감사하겠습니다.

  1. kimchunsung 2011.12.20 16:47 신고

    레이아웃 xml처리는어케해야대죠그럼..?

    • 냥아 2012.01.02 12:54 신고

      답이 늦었네요ㅠ
      레이아웃 xml에서는 보여주는 화면이기 때문에 return 된 값을 EditText나 TextView에 연결하여 보여주시면 되겠죠?

  2. hi 2012.05.18 16:04 신고

    월은 배열로 들어갑니당 0,1,2,3,4,.... 그러므로 5월=4입니다 따라서 set(myear,mmonth-1,mday)해줘야합니당..

    • 냥아 2012.05.21 11:11 신고

      맞는 말씀입니다. 제가 그 부분에 대한 설명을 따로 안했었군요 하하 댓글 감사합니다~^^

  3. eclips12 2012.06.06 21:08 신고

    소스 많은 도움이 되었습니다.

    근데 리턴 값을 텍스트뷰에 붙일때 어떻게 붙이는거죠;;

    저는

    objTxtView2.setText(new dday().toString()); 라고 해줬는데

    오류가 출력된다는...

    • 냥아 2012.06.07 14:56 신고

      안녕하세요 냥아블로거입니다.

      지금 님께서는 그냥 클래스 자체를 생성과 동시
      .tostring() 해주셨으니 에러가 나는게 당연합니다.

      그냥 caldate(int myear, int mmonth, int mday) 메소드를 님께서 사용하시는 클래스 내에 넣으시고

      objTxtView2.setText(Integer.toString(caldate(myear, mmonth, mday));
      라고 하시는 것이 나을 듯 싶네요.
      아니면 메소드에서 따로 값을 띄어내서

      int count = caldate(year, month, day);
      objTxtView2.setText(""+count);
      로 사용하셔도 괜찮을듯 싶습니다~

  4. eclips12 2012.06.08 15:29 신고

    와 해결했습니다^^

    이게...메인 액티비티에 어거지로 넣을라니까 오류가 계속 나던건데..

    따로 액티비티 만들어서 넣어주고

    메인에서 인텐트로 불러오니까 잘 작동하네요^^ 감사해요

  5. 원주 2013.03.05 11:48 신고

    틀렸네요.. Month는 -1 모자라서 계산되기 때문에 달을 +1 해서 함수에 적용해야 정확한 개월수가 나온답니다.

  6. 화면구현하고싶은사람 ㅋ 2014.08.24 17:11 신고

    저 자바 소스에

    xml로 화면구현하는 방법을 도저히 모르겠습니다ㅠ

    자세하게 알려주실수 잇을까요?ㅠ

+ Recent posts