0
알람 관리자에 문제가 있습니다. 특정 시간에 시작 알람을 설정하려고하는데 시간을 설정 한 후 2 초 후에 알람이 시작됩니다. 다음 설정 알람에 대한 내 코드입니다 : 여기알람 관리자를 시작하는 데 걸리는 시간
//setting alarm by clicking "add alarm"
addAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//initializing alert dialog with time picker
final AlertDialog.Builder alert = new AlertDialog.Builder(Events.this);
final TimePicker timer = new TimePicker(Events.this);
alert.setMessage(R.string.choose_time);
alert.setTitle(R.string.set_alarm);
alert.setView(timer);
alert.setPositiveButton("Apply", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//getting set time
int hour = timer.getHour();
int minute = timer.getMinute();
//getting alarm service
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
//creating intent for switching to AlarmReceiver.class
Intent intent = new Intent(Events.this, AlarmReceiver.class);
SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
//getting full date with hours and minutes
String alarmTime = selectedDate + " " + hour + ":" + minute;
//parsing date
try {
alarmDate = formatter.parse(alarmTime);
} catch (ParseException e) {
e.printStackTrace();
}
//creating pending intent
PendingIntent pendingIntent = PendingIntent.getBroadcast(Events.this,
8452, intent, PendingIntent.FLAG_UPDATE_CURRENT);
//setting alarm
alarmManager.set(RTC_WAKEUP,alarmDate.getTime(), pendingIntent);
//info about time set
Snackbar.make(bottomRL, "Alarm set in " + hour + ":" + minute,
Snackbar.LENGTH_LONG).show();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.show();
}
});
그리고 내 수신기의 : PLS,
public class AlarmReceiver extends BroadcastReceiver {
public AlarmReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, R.string.alarm_message, Toast.LENGTH_LONG).show();
Vibrator vibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(2000);
}
}
아무도 도와 줄 수는 문제를 해결하기 위해?
문자열 selectedDate는 다른 액티비티의 getStringExtra에서 가져 오는 문자열입니다. –
'SimpleDateFormat'의 패턴 문자열이 나와 일치하지 않습니다. 그것과 구문 분석하려고, 그래서 그것은 예외를 던지고있어'alarmDate' 당신이 그것을 초기화 무엇이든 남아 있습니다. 이것은 분명 과거의 날짜/시간이므로 알람이 거의 즉시 발사됩니다. SimpleDateFormat에 대한 문서를보고 패턴을 수정하십시오. http://developer.android.com/reference/java/text/SimpleDateFormat.html –
SimpleDateFormat을 "dd-MM-yyyy HH : mm"으로 변경했습니다. 고마워, Mike M. –