Проверка даты и времени с телефонами дата и время
Я пытаюсь создать приложение, которое проверяет дату и время, указанное пользователем, с датой и временем телефона и выполняет определенную задачу. Я могу принимать данные, используя диалог выбора даты и времени, но у меня возникают проблемы с их обработкой.
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);