'Programming/Android'에 해당하는 글 10건

반응형

( Android에서 현재 시간 알기 )


[MainActivity.java]

import java.util.Date;


public class MainActivity extends Activity {

TextView timeView;

long now_Time = System.currentTimeMillis();

Date date = new Date(now_Time);

//날짜, 시간정보 받아오기

SimpleDateFormat CurDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일");

SimpleDateFormat CurTimeFormat = new SimpleDateFormat("HH시 mm분");

SimpleDateFormat CurYearFormat = new SimpleDateFormat("yyyy");

SimpleDateFormat CurMonthFormat = new SimpleDateFormat("MM");

SimpleDateFormat CurDayFormat = new SimpleDateFormat("dd");

SimpleDateFormat CurHourFormat = new SimpleDateFormat("HH");

SimpleDateFormat CurMinuteFormat = new SimpleDateFormat("mm");


//위에서 지정된 포맷으로, String 타입으로 리턴합니다.

String strCurDate = CurDateFormat.format(date);

String strCurTime = CurTimeFormat.format(date);

String strCurYear = CurYearFormat.format(date);

String strCurMonth = CurMonthFormat(date);

String strCurDay = CurDayFormat.format(date);

String strCurHour = CurHourFormat.format(date);

String strCurMinute = CurMinuteFormat.format(date);


/* 위와 같이 MainActivity에서 날짜 및 시간에 대한 정보를 얻을 수 있습니다.

만약 TextView에서 위의 정보를 이용하여 보여주고 싶다면, 아래와 같이 setText를 통해 월, 일, 시간에 대한 정보를 볼 수 있게 됩니다. */


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


timeView = (TextView)findViewById(R.id.txt_curTime(보여줄 TextView의 id));

timeView.setText("현재 시간정보 = " + strCurMonth + "월 " + strCurDay + "일 " + strCurHour + "시");

}


////////////////////////////////////////////////////////////////////////////////////

[activity_main.xml]

<TextView

android:id="@+id/txt_curTime"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:textSize="12dp" />


이 소스에서는 TextView를 하나 만들어 준 후, MainActivity에서 사용하기 위하여 android.id를 txt_curTime 으로 해주면 됩니다. id만 추가하면 됩니다.

반응형

WRITTEN BY
SiriusJ

,
반응형

( 안드로이드 폰에서 Back 키 두 번 눌러서 애플리케이션 종료하기 )


보통 애플리케이션을 실행한 후, 종료할 때에 안드로이드 BACK 키를 2번 눌러서 종료해본 경험이 있으실 것입니다.

안드로이드 첫 포스팅은 애플리케이션 메인화면에서 BACK를 1번 눌렀을 때, 확인 토스트 창을 한 번 띄워서 확인을 한 후, 일정시간 안에 다시 한번 눌렀을 때, 종료하는 부분을 다뤄보겠습니다.


안드로이드 스튜디오를 설치 후, 프로젝트를 생성하여 MainActivity를 띄워 놓았다는 가정 하입니다.

[MainActivity.java]

import android.app.Activity;

import java.util.Calendar;

import android.os.Message;

import android.os.Handler;

import android.widget.Toast;


public class MainActivity extends Activity {

//2번 back누르면 종료시키도록

private boolean flag_BackKey = false;                //BACK KEY가 눌려졌는지에 대한 FLAG 로 사용됩니다.

private long currentTime = 0;                          // Time(Millis) Interval을 계산합니다.

private static final int MSG_TIMER = 1;              // Switch문에서 사용하게 되는 Key값입니다.

private static final int BACKKEY_TIMEOUT = 2;    // Interval을 정의합니다.

private static final int IN_MILLISEC = 1000;        // Millis를 정의합니다.


@Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);


       //back버튼을 두번 누르면 종료되도록 합니다.

    @Override

    public void onBackPressed(){            //BACK키가 눌렸을 때의 함수로 Override하여 사용합니다.

            if ( flag_BackKey == false ){

                // 첫 번째로 클릭했을 경우로, false에서 true로 바꿔줍니다.

            flag_BackKey = true;


            currentTime = Calendar.getInstance().getTimeInMillis();       //Java의 Calendar를 import하여 사용합니다.

            Toast.makeText(this, "\'뒤로\'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show();

//Toast는 차후에 설명하겠지만, 첫번째 파라미터 this는 현 수행중인 MainActivity이며, 두번째 파라미터는 출력할 문자열입니다. 세번째 파라미터는 Toast창을 길게 보여줄 것인지, 짧게 보여줄 것인지에 대한 시간 간격으로 SHORT와 LONG 이 있습니다.

            startTimer();

            }else{            //만약 BACKKey의 플래그가 현재 false가 아닌, true 라면 아래를 수행합니다.

                // second click : 2초 이내면 종료! 아니면 아무것도 안한다.

            flag_BackKey = false;

            if ( Calendar.getInstance().getTimeInMillis() <= (currentTime + (BACKKEY_TIMEOUT * IN_MILLISEC )) ) {

                    finish();                //currentTime + 2000 (2초) 이므로, 2초 안에 클릭 했을 때, MainActivity를 종료해주는 부분입니다.

            }

        }

    }


    private void startTimer() {                                    //2초의 시간적 여유를 가지도록 Delay 시킵니다.

        backTimerHandler.sendEmptyMessageDelayed(MSG_TIMER , BACKKEY_TIMEOUT * IN_MILLISEC );

    }


    private Handler backTimerHandler = new Handler(){

        public void handleMessage(Message msg){

            switch( msg.what ){                //msg의 값이 무엇인지 파악하여 만약 MSG_TIMER라면, flag를 다시 false로 해줍니다.

                case MSG_TIMER :{

                    flag_BackKey = false;

                }

                break;

            }

        }

    };


==> 즉, 전체적인 구조를 정리하면, MainActivity. 즉 메인화면에서 BACK키를 한번 누르게 되면 Toast창을 출력 한 후, onBackedPressed 함수를 수행하여 flag를 false->true로 바꿔준 후, startTimer함수를 거쳐서 Handler를 수행하게 됩니다. BACKKEY_TIMEOUT 의 값을 통하여 2초로 Delay를 줄것인지, 그 밖의 임의의 값을 Delay로 줄 수 있습니다. 그 안에 한번 더 BACK Key를 누르게 되면 finish() 를 통해 MainActivity를 종료해주게 됩니다.

반응형

WRITTEN BY
SiriusJ

,