我正在尝试创建一个应用程序,用于检查用户给出的日期和时间以及手机的日期和时间,并执行特定任务。我可以使用日期和时间选择器对话框来获取输入,但我遇到了如何处理它们的问题。
public class MainActivity extends Activity {
int SystemsTimeHour;
int SystemsTimeMin;
int hour ;
int min;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TimePickerDialog tpd = new TimePickerDialog(MainActivity.this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
hour = hourOfDay;
min = minute;
}
}, hour, min, true);
tpd.show();
}
});
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, min);
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(
MainActivity.this, 0, intent, 0);
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
alarmIntent);
}
}
答案 0 :(得分:0)
制作一个这样的日历对象:
Calendar rightNow = Calendar.getInstance()
此对象基于设备系统设置,这正是您想要的。现在,为了得到时间:
Calendar.get(Calendar.HOUR_OF_DAY);
或者你可以使用它:
public final Date getTime() 在API级别1中添加
返回此Calendar作为Date对象的时间。 抛出 IllegalArgumentException如果未设置时间且不能从当前字段值计算时间。
来自android docs:
http://developer.android.com/reference/java/util/Calendar.html#getTime%28%29
获得系统时间后,将其与时间进行比较,执行以下操作:
if(myTime == SystemsTime){
//Do this
}else{
//Do this
}
您只需将SystemsTime
设置为Calendar.get(Calendar.HOUR_OF_DAY);
或Calendar.getTime()
。
int SystemsTime = Calendar.get(Calendar.HOUR_OF_DAY);
答案 1 :(得分:0)
您可以使用AlarmManager在特定时间触发PendingIntent。
例如,如果您想在5.30醒来,请使用此时间创建日历实例。
int hour = 5;
int minute = 30;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR,hour);
calendar.set(Calendar.MINUTE,minute);
calendar.set(Calendar.SECOND, 0);
然后创建一个PendingIntent
Intent intent = new Intent(your_context,AlarmReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(your_context, 0,intent, 0);
然后使用AlarmManger对象设置在指定时间唤醒PendingIntent
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmMgr.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), alarmIntent);
您可以在广播接收器中实现您的功能。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Toast.makeText(arg0, "Alarm!!", Toast.LENGTH_LONG).show();
}
}
在清单中注册您的收件人
<receiver
android:name="yourpackagename.AlarmReceiver"
android:process=":remote" >
</receiver>