Dobrý den,
mám dotaz na dořešení kódu pro alarm, který se spouští dle času, kdy vychází slunce. Algoritmus jsme napsali s kamarádem, ale nedořešili zcela do konce. Nadeklarovali jsme pole a do argumentů jsme předali jednotlivé zvonící časy.
Vím, že nyní jen postavím jednotlivé prvky pole(Leden s indexem 0) proti něčemu, leč nevím proti čemu a do jaké metody, aby byl alarm funkční.
Zde je dosavadní kód:
package sunrisealarm;
/**
*
* @author Fesor
*/
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.swing.JOptionPane;
public class SunriseAlarm {
List<SunriseTime> times;
Date alarmed;
/**
*/
public void checkAlarm() {
times = new ArrayList();
times.add(new SunriseTime(5, 30)); // index 0 je leden vola konstruktor tridy SunriseTime a nastavi parametry
times.add(new SunriseTime(5, 35)); //unor
times.add(new SunriseTime(5, 37)); //brezen
times.add(new SunriseTime(5, 38));// duben
times.add(new SunriseTime(5, 40));//kveten
times.add(new SunriseTime(5, 42));//cerven
times.add(new SunriseTime(5, 45));//cervence
times.add(new SunriseTime(5, 52));//srpen
times.add(new SunriseTime(5, 55));//zari
times.add(new SunriseTime(5, 57));//rijen
times.add(new SunriseTime(5, 59));//listopad
times.add(new SunriseTime(6, 01));//prosinec
alarmed = null;
Thread t = new Thread();
t.setPriority(Thread.MIN_PRIORITY);
t.start();
}
public void run() {
while(true) { //nekonecny cyklus kontrolujici 1 000 000/sec
Calendar c = new GregorianCalendar();
int hours = c.get(Calendar.HOUR);
int minutes = c.get(Calendar.MINUTE);
int month = c.get(Calendar.MONTH);
if(times.get(month).getHour() == hours && times.get(month).getMinute() == minutes && (alarmed == null || alarmed.before(new Date()))) { //proc tu mame Date??
Calendar cal = Calendar.getInstance();// proc sme volali instanci??
cal.set(Calendar.HOUR, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
alarmed = cal.getTime(); //nastavi zpet na aktualni cas
JOptionPane.showMessageDialog(null, "Alarm zvnoni ;)");
break;
}
}
}
public static void main(String[] args) {
SunriseAlarm sa = new SunriseAlarm();
sa.checkAlarm();
}
private class SunriseTime {
int hour;
int minute;
public SunriseTime(int hour, int minute) {
this.hour = hour;
this.minute = minute;
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
}
}