마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

알람시계 제작에 문의가 있습니다.

0 추천
알람 시계를 만들경우

알람을 0~4개까지 할려고하는데.

setalarm을 다음과 같이 할 경우 하였습니다.

 

    Intent intent = new Intent(ServiceClass.this,MainActivity.class);
        intent.putExtra("splash_check", "true");
        
        PendingIntent sender = PendingIntent.getActivity(mContext, afternoonAlarmId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        mManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        calendar.set(Calendar.HOUR_OF_DAY, 9);
        calendar.set(Calendar.MINUTE, 40);
        calendar.set(Calendar.SECOND, 0);
        
        mManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        //알람 시간
        mManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 0, sender);
        Toast.makeText(ServiceClass.this, "알람 설정 시간 " + calendar.getTime().toString(), Toast.LENGTH_LONG).show();

이런식으로 하면 9시40분0초에 한번 activity를 띄우고 toast를 띄우겠죠

 

그렇다면  

알람 1,2,3,4 각각 다 set을 할경우 각각의 알람을 set하는 함수를 따로 만들어서 해야하나요?

 

알람을 해지할려면 각각해야하나요?

 

afternoonAlarmId을 다 따로 주어서 각각 set하고 cancel해야하나요?
쿠쿠부다스 (6,470 포인트) 님이 2017년 2월 7일 질문

1개의 답변

0 추천
afternoomAlarmId가 고정값이라면 항상 알람은 하나가 됩니다

보통 알람앱은 가지고 있는 4개의 알람중 제일 빠른 시간의 알람이 울린후 다음 빠른 시간에 대해 알람을 설정합니다

이렇게 하는 이유는 같은 시간에 설정된 알람이 동시에 울리게 되는것을 방지하는 이유고요

알람 아이디를 동일하게 한다면 시간이 갱신되는것이므로 따로 취소하지 않아도 됩니다

마지막으로 repeat alarm은 android 버전에 따라 정확한 시간에 울리지 않는 경우가 많으므로 once알람으로 설정하시고 알람이 울릴경우 다음 시간을 설정하는게 좋습니다

android 버전에 따른 설정은 구글에 검색해보시면 많으니 참조하세요
prague (26,200 포인트) 님이 2017년 2월 7일 답변
궁금한 점이 있습니다.
AlarmId를 고정으로 하여 알람 하나면 된다고 하셨는데
그럴경우 현재시간과 설정된 시간과 비교를 해야할 거같은데

알람중 현재시간과 제일 빠른 시간을 찾아서 울리고, 울리고 난 후에 그 뒤에 제일 빠른 시간을 찾아서 울리라는 말씀이죠??

이론으로는 알겠는데 쉽게 따라 할 예제가 있을까요?
...