Android/Side Projects

My Alarm 앱 개발하기

화요밍 2022. 2. 8. 19:42
728x90
반응형

 

Side Project - My Alarm
시간을 지정해 알람을 설정하고, 지정된 시간이 되면 알람이 울리는 앱을 구현한 프로젝트

 

GitHub - hwayeon351/My-Alarm

Contribute to hwayeon351/My-Alarm development by creating an account on GitHub.

github.com


학습 회고

오늘은 기본 앱인 알람 앱을 만들어보는 프로젝트를 시작했다.

알람을 설정하고 난 후, 해당 앱이 백그라운드 상태로 넘어갈 수 있고 알람을 끄거나 시간을 바꿀 수도 있다.

따라서 key-value로 파일에 저장하는 SharedPreferences를 사용하여 알람을 등록하고 삭제하였다.


오늘 공부한 내용

  • TimePickerDialog

안드로이드에서 제공하는 컨트롤로 사용자는 시간이나 날짜를 대화상자로 선택할 수 있다.

TimePicker는 시간(시, 분, 오전/오후)이나 날짜(년, 월, 일)의 각 부분을 선택하는 컨트롤을 제공하며, 시간을 선택하는 Dialog가 TimePickerDialog이다.

public TimePickerDialog (Context context, 
                TimePickerDialog.OnTimeSetListener listener, 
                int hourOfDay, 
                int minute, 
                boolean is24HourView)

TimePickerDialog의 생성자에는 Context, TimePickerDialog.OnTimeSetListener, hourOfDay, minute, is24HourView를 매개변수로 갖는다.

  • TimePickerDialog.OnTimeSetListener - TimePickerDialog에서 시간이 셋팅되었을 때 호출되는 콜백 리스너이다.
  • hourOfDay - TimePickerDialog의 초기 시를 설정한다.
  • minute - TimePickerDialog의 초기 분을 설정한다.
  • is24HourView - true = 24시간으로 표기, false = AM/PM으로 표기를 설정한다.

알람 앱에서는 알람을 셋팅할 때 초기 TimePickerDialog에 현재 시각으로 보여지기 위해서 Calendar 객체에서 현재 시간을 가져와 설정하였다. 또한, AM/PM으로 표기하기 위해 is24HourView에 false 값을 넣어 TimePickerDialog를 생성하고 show()를 호출해서 띄워주었다.

TimePickerDialog(this, { picker, hour, minute ->
    val model = saveAlarmModel(hour, minute, false)
    renderView(model)
 
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false)
    .show()

https://developer.android.com/guide/topics/ui/controls/pickers

 

선택 도구  |  Android 개발자  |  Android Developers

선택 도구 Android에서 제공하는 컨트롤로 사용자는 시간이나 날짜를 바로 사용 가능한 대화상자로 선택할 수 있습니다. 각 선택 도구는 시간(시, 분, 오전/오후)이나 날짜(년, 월, 일)의 각 부분을

developer.android.com

 

 

 

  • SharedPreference

SharedPreference 객체는 Key-Value 쌍이 포함된 파일을 가리키며, Key-Value로 데이터를 쓰거나, 읽을 수 있는 메서드를 제공한다.

앱 내의 데이터는 앱이 종료되면 메모리에서 삭제가 되기 때문에 앱이 종료되고 다시 실행했을 때에는 사라지게 된다.

따라서 간단하게 Key-Value 형식으로 저장할 수 있는 데이터는 SharedPreference를 사용하여 앱이 종료되어도 다시 데이터를 읽을 수 있도록 저장할 수 있다.

 

SharedPreference는 저장하려는 Key-Value 컬렉션이 비교적 작은 경우에 사용하면 좋다.

SharedPrefereces를 사용해서 파일을 생성하면 실제 파일은 단말기의 /data/data/PACKAGE_NAME/shared_prefs에 지정한 Preferences 이름으로 xml 파일이 생성된다.

안드로이드 스튜디오의 Device File Explorer를 통해 확인할 수 있다.

 

  • getSharedPreferences(): SharedPreferences 파일의 이름과 Context 모드를 매개변수로 하여 해당 SharedPreference 파일을 가져올 수 있다.
val sharedPreferences = getSharedPreferences("time", Context.MODE_PRIVATE)

Context.MODE_PRIVATE로 비공개 모드를 설정해서 해당 앱에서만 파일에 액세스하도록 할 수 있다.

 

  • edit(): SharedPreferences.Editor를 만들고 putInt()나 putString()과 같은 메서드를 사용해서 파일에 Key-Value를 쓸 수 있다.
  • apply(): 쓰기가 완료된 후 SharedPreferences 객체를 즉시 변경하지만 디스크에는 비동기적으로 쓴다.
  • commit(): 쓰기가 완료된 후 데이터를 디스크에 동기적으로 쓴다. 동기적이므로 기본 스레드에서 호출하는 것을 피해야 한다.
with(sharedPreferences.edit()) {
    putString(ALARM_KEY, model.makeDataForDB())
    putBoolean(ONOFF_KEY, model.onOff)
    commit()
}

 

 

SharedPreferences 파일에서 데이터를 가져올 때는 getInt(), getString(), getBoolean() 등을 사용해서 매개변수에 Key값과 Default 값을 넣어주면 된다. (해당 키 값이 존재하지 않으면 Default 값이 반환된다.)

val sharedPreferences = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE)

val timeDBValue = sharedPreferences.getString(ALARM_KEY, "9:30") ?: "9:30"
val onOffDBValue = sharedPreferences.getBoolean(ONOFF_KEY, false)

https://developer.android.com/training/data-storage/shared-preferences?hl=ko 

 

키-값 데이터 저장  |  Android 개발자  |  Android Developers

키-값 데이터 저장 저장하려는 키-값 컬렉션이 비교적 작은 경우 SharedPreferences API를 사용해야 합니다. SharedPreferences 객체는 키-값 쌍이 포함된 파일을 가리키며 키-값 쌍을 읽고 쓸 수 있는 간단

developer.android.com

 

 

728x90
반응형

'Android > Side Projects' 카테고리의 다른 글

도서 리뷰 앱 개발하기  (1) 2022.02.10
My Alarm 앱 개발하기  (0) 2022.02.09
오늘의 명언 앱 개발하기  (1) 2022.02.07
오늘의 명언 앱 개발하기  (0) 2022.02.06
푸쉬 알림 수신기 앱 개발하기  (0) 2022.02.05