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();
}
});
这是我的接收机:
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);
}
}
任何人可以帮助我解决问题,请?
String selectedDate是我从getStringExtra从另一个活动获得的字符串 –
“SimpleDateFormat”的模式字符串不符合你的要求试图解析它,所以它抛出一个异常,'alarmDate'留在你初始化它的任何东西。这显然是过去的一个日期/时间,所以你的警报几乎立即发射。查看'SimpleDateFormat'的文档,并修复你的模式。 http://developer.android.com/reference/java/text/SimpleDateFormat.html –
我已经将SimpleDateFormat更改为“dd-MM-yyyy HH:mm”,它的工作原理!非常感谢Mike M. –