안녕하세요. TimePicker 와 AlarmManager 공부를 하고 있는 학생입니다.
다름 아니라 안드로이드 스튜디오를 통해 구동한
가상기기(Nexus 5 API 26)에서는 제가 의도한대로 정상 작동을 하는데,
제 실제 핸드폰(Kitkat 4.4.2 API 19)에서는 작동이 중지됩니다.
타임피커를 그냥 처음부터 액티비티에 집어넣고 실행하는건 문제가 없는데,
버튼을 통해 Dialog로 출력을 할 경우에만 중단이 되네요.
public void btnClicked(View view) {
TimePickerFragment timePickerFragment = new TimePickerFragment();
timePickerFragment.show(getSupportFragmentManager(), "TimePicker");
}
public Dialog onCreateDialog(Bundle savedInstanceState){
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
TimePickerDialog tpd = new TimePickerDialog(getActivity(), this,
hour,minute,DateFormat.is24HourFormat(getActivity()));
return tpd;
코드는 이렇습니다.
핸드폰에서 구동시키는게 목푠데.. 정작 제 핸드폰에서는 오류가 나버리니 당황스럽네요..
시간을 입력받아 해당 시간에 알림이 발생하게 하는 것이 목표인데
그냥 textview로 입력받는 수 밖에는 없을까요?
/////추가
값을 가져오는 부분들(초보라 이게 맞는 표현인지 모르겠어요)을 지우면 다이얼로그 자체는 출력이 되네요.
Calendar c = Calendar.getInstance();
라던지
int hour = 10;//c.get(Calendar.HOUR_OF_DAY);
int minute = 10;//c.get(Calendar.MINUTE);
이런 부분들이요.
최소 API 24이상이 필요하다는걸 보면 제 핸드폰이 API 19여서 발생하는 문제가 맞는 것 같은데,
타임피커의 초기값은 임의로 주고, 단순히 띄워서 값을 입력만 한다는 건 가능하다고 쳐도..
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE,minute);
Intent intent = new Intent(getContext(), alram_test.class);
PendingIntent operation = PendingIntent.getActivity(getContext(), 0, intent, 0);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), operation);
}
후에 이런식으로 알람 기능에도 사용을 해야 하는데, 입력받은 값을 어떻게 받아와야 좋을까요..