이번 시간에는 TimePickerDialog 호출하는 클래스와 메인화면, 메인코드를 구현하겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.17 - [안드로이드] - [안드로이드 코틀린] 정해진 시간에 알람 울리는 방법 Notification TimePickerDialog part1 - 설정
- 설명 -
시계 호출하는 클래스
class TimePickerFragment: DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
var c: Calendar = Calendar.getInstance()
var hour = c.get(Calendar.HOUR_OF_DAY)
var minute = c.get(Calendar.MINUTE)
return TimePickerDialog(activity, activity as TimePickerDialog.OnTimeSetListener,
hour, minute, DateFormat.is24HourFormat(activity))
}
}
build.gradle(Module:프로젝트명:app)
- 설명 -
UI 구성요소를 객체 생성없이 사용하기 위해 필요함
buildFeatures{
dataBinding = true
}
- 설명 -
1. 사용자가 선택한 시간 표시하는 TextView
2. TimePickerDialog 호출하는 Button
3. 알람 취소하는 Button
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/time_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textColor="@android:color/black"
android:textSize="30sp" />
<Button
android:id="@+id/time_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/time_text"
android:layout_centerHorizontal="true"
android:text="시간 지정" />
<Button
android:id="@+id/alarm_cancel_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/time_btn"
android:layout_centerHorizontal="true"
android:text="알람 취소" />
</RelativeLayout>
</layout>
- 설명 -
1. onTimeSet()
TimePickerDialog 에서 시간 선택이 끝나면 호출되는 함수
2. updateTimeText()
선택한 시간 표시하는 함수
3. startAlarm()
알람 설정 함수
4. cancleAlarm()
알람 취소 함수
class MainActivity : AppCompatActivity(), TimePickerDialog.OnTimeSetListener {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//binding 초기화
binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
//알람 설정
binding.timeBtn.setOnClickListener {
var timePicker = TimePickerFragment()
//시계 호출
timePicker.show(supportFragmentManager, "Time Picker")
}
//알람 취소
binding.alarmCancelBtn.setOnClickListener {
// 알람 취소 함수
cancleAlarm()
}
}
//시간 정하면 호출되는 함수
override fun onTimeSet(timePicker: TimePicker?, hourOfDay: Int, minute: Int) {
var c = Calendar.getInstance()
//시간 설정
c.set(Calendar.HOUR_OF_DAY, hourOfDay) //시
c.set(Calendar.MINUTE, minute)//분
c.set(Calendar.SECOND, 0)//초
//화면에 시간 지정
updateTimeText(c)
//알람 설정
startAlarm(c)
}
//화면에 시간 지정
private fun updateTimeText(c: Calendar) {
var curTime = DateFormat.getTimeInstance(DateFormat.SHORT).format(c.time)
binding.timeText.append("알람 시간: ")
binding.timeText.append(curTime)
}
//알람 설정
private fun startAlarm(c: Calendar){
//알람매니저 선언
var alarmManager: AlarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
var intent = Intent(this, AlertReceiver:: class.java)
var pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0)
//설정 시간이 현재시간 이전이면 +1일
if(c.before(Calendar.getInstance())){
c.add(Calendar.DATE, 1)
}
alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.timeInMillis, pendingIntent)
}
//알람 취소
private fun cancleAlarm(){
//알람매니저 선언
var alarmManager: AlarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
var intent = Intent(this, AlertReceiver:: class.java)
var pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0)
alarmManager.cancel(pendingIntent)
binding.timeText.text = "알람 취소"
}
}
2022.06.14 - [안드로이드] - [안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정
2022.06.06 - [안드로이드] - [안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성
2022.05.31 - [안드로이드] - [Kotlin 코틀린] 간단한 RecyclerView 만드는 방법 part1 - 데이터 & 화면
[안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법 (5) | 2022.06.20 |
---|---|
[안드로이드 코틀린] 정해진 시간에 알람 울리는 방법 Notification TimePickerDialog part3 - 알림 시간 표시 (0) | 2022.06.19 |
[안드로이드 코틀린] 정해진 시간에 알람 울리는 방법 Notification TimePickerDialog part1 - 설정 (0) | 2022.06.17 |
[안드로이드 코틀린] Tab Custom Animation part3 - 탭 애니메이션 적용 (0) | 2022.06.16 |
[안드로이드 코틀린] Tab Custom Animation part2 - 탭 기능 구현 (0) | 2022.06.15 |
댓글 영역