Проверка даты и времени с телефонами дата и время

Я пытаюсь создать приложение, которое проверяет дату и время, указанное пользователем, с датой и временем телефона и выполняет определенную задачу. Я могу принимать данные, используя диалог выбора даты и времени, но у меня возникают проблемы с их обработкой.

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 ответа

Решение

Вы можете запустить PendingIntent в определенное время, используя AlarmManager.

Например, если вы хотите проснуться в 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>

Сделайте объект календаря следующим образом:

Calendar rightNow = Calendar.getInstance()

Этот объект основан на системных настройках устройства, что именно то, что вы хотите. Теперь, чтобы получить время:

Calendar.get(Calendar.HOUR_OF_DAY);

Или вы можете использовать это:


публичная дата окончания getTime () Добавлена ​​на уровне API 1

Возвращает время этого Календаря как объект Date. Выдает IllegalArgumentException, если время не установлено, и время не может быть> вычислено из текущих значений поля.

Из документов Android:

http://developer.android.com/reference/java/util/Calendar.html

Как только у вас будет системное время, сравните его с вашим временем:

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);
Другие вопросы по тегам