日期和时间检查电话日期和时间

时间:2015-11-16 05:26:24

标签: android alarm datepickerdialog

我正在尝试创建一个应用程序,用于检查用户给出的日期和时间以及手机的日期和时间,并执行特定任务。我可以使用日期和时间选择器对话框来获取输入,但我遇到了如何处理它们的问题。

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);
}

}

2 个答案:

答案 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>