2011-05-16 2 views
2

내 알람 시계에서 신호를 사용하려면 다음 코드를 사용하십시오.Android : AlarmManager 함정

Intent i = new Intent(AlarmReciever.ACTION_WAKEUP); 
i.putExtra(AlarmDao.ID_COLUMN, a.getId()); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(
         context, a.getId(), i, PendingIntent.FLAG_CANCEL_CURRENT);  
Calendar cal = a.getNextAlarm(); 
if(cal!=null){ 
    AlarmManager alarmManager = (AlarmManager) 
         context.getSystemService(context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
    if(toast) showToast(context, cal); 
} 

수신기가 음악을 재생하고 "스위치 끄기"대화 상자를 표시하는 서비스를 시작합니다.

context.startService(wakePlayer); 
context.startActivity(wakeWindow); 

이 코드의 문제점은 때로는 실패하는 것입니다. 음악을 시작하지 않고 대화 상자를 표시하지 않는다는 의미입니다. 같은 문제에 직면 한 사람이 있습니까?

+0

당신이 안드로이드 로그 캣에 약간의 오차가있을 수 있습니까? –

답변

1

아마도 WakeLock을 사용해야합니다. 다음 사항을 확인하십시오 :

+0

죄송합니다, 그것에 대해 언급하지 않았습니다. 나는 이미 "wakeWindow"활동에서 잠자기 잠금을 사용합니다. 그러나 서비스 (그쪽으로 음악을 재생)가 시작되지 않습니다. 내 방송 수신기에서 서비스를 시작하기 때문에 이상하네요! 그 활동이 아니야. – Nick

+1

브로드 캐스트 리시버에서도 WakeLock을 사용하는 것이 좋습니다. 아직 풀지 마십시오. 그리고 "wakeWindow"가 끝나면 잠금을 해제 할 수 있습니다. "wakePlayer"또는 "wakeWindow"에서 WakeLock을 사용할 필요가 없을 수도 있습니다. 나는 이것이 귀하의 사건에 적합한 지 확신하지 못합니다. 다음을 참조하십시오 : [Alarm Example] (https://github.com/commonsguy/cw-advandroid/tree/master/SystemServices/Alarm) – domx